数字问题
来源:互联网 发布:python svd分解 编辑:程序博客网 时间:2024/06/11 17:52
1.判断一个数是否为素数
素数就是仅能被1和它自身整除的整数。
判断一个整数n是否为素数就是要判断整数n能否被除1和自身之外的任意整数整除,若都不能整除,则n为素数。
源码:
#include<iostream.h>#include<math.h>void main(){int m,i;double k;cout<<"please input the number:"<<endl;cin>>m;k=sqrt(m);bool bflag = true;for(i=2;i<=k;i++) {if(m%i==0){bflag = false;break;}}if(bflag) cout<<m<<" is a prime number!"<<endl;else cout<<m<<" is not a prime number!"<<endl; }效果:
2.有限5位数
个位数为6且能被3整除的五位数共有多少?
源码:
#include<iostream.h>void main(){long int i=0;int count=0;for(i=1000;i<9999;i++){if((i*10+6)%3==0){cout<<i<<" ";count++;}}cout<<endl;cout<<count<<endl;}
效果:
3.8除不尽的自然数
一个自然数被8除余1,所得的商被8除也余1,再将第二次的商被8除后余7,最后得到一个商为a。
又知这个自然数被17除余4,所得的商被17除余15,最后得到一个商是a的2倍。
求这个自然数。
分析:
设最后的商为i(i从0开始取值),用逆推法可以列出关系式:
( ( (i*8+7) * 8 ) + 1 ) * 8 + 1 = ( (2*i*17) + 15 ) * 17 + 4
再用试探法求出商i的值。
源码:
#include<iostream.h>void main(){int i;for(i=0; ;i++){if( ((i*8+7)*8+1)*8+1 == (2*i*17+15)*17+4 ){cout<<"the left number is : "<<i<<endl;break;}}cout<<"the required number is : "<<((i*8+7)*8+1)*8+1<<endl;}效果:
4.一个奇异的三位数
一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码顺序正好相反,求这个三位数。
分析:
根据题意可知,七进制和九进制表示的这个自然数的每一位一定小于7,可设其七进制数形式为kji,然后设其九进制表示形式为ijk(i、j、k的取值分别为1~6)。
源码:
#include<iostream.h>void main(){int i,j,k;for(i=1;i<7;i++){for(j=0;j<7;j++){for(k=1;k<7;k++){if((i*9*9+j*9+k) == (i+j*7+k*7*7)){cout<<"七进制数为"<<k<<j<<i<<endl;cout<<"九进制数为"<<i<<j<<k<<endl;cout<<"the special number is "<<i*9*9+j*9+k<<endl;}}}}}效果:
5.4位反序数
设N是一个四位数,它的9倍恰好是其反序数,求N。
反序数就是将整数的数字倒过来形成的整数。
分析:
可设整数N的千、百、十、个位为i、j、k、l,其取值均为0~9,则满足关系式:
( i*10^3 + j*10^2 + 10*k + l) * 9 = (l*10^3 + k*10^2 + 10*j + i)
源码1:
#include<iostream.h>void main(){int i=1,j,k,l;for(i=1;i<=9;i++){for(j=0;j<=9;j++){for(k=0;k<=9;k++){for(l=1;l<=9;l++){if((i*1000+j*100+k*10+l)*9 == l*1000+k*100+j*10+i){cout<<i<<j<<k<<l<<endl;break;}}}}}}效果1:
源码2:
void main(){int n;for(n=1002;n<1111;n++){if(n%10*1000+n/10%10*100+n/100%10*10+n/1000==9*n){cout<<"the number is "<<n<<endl;}}}效果2:
6.求车速
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数,为95859。两小时候里程表上出现了一个新的对称数。
问该车的速度是多少?新的对称数是多少?
分析:
设所求对称数为i,其初值为95859,对其依次递增取值,将i值的每一位分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所求的对称数。
源码:
#include<iostream.h>void main(){int t,a[5];long int i,k;for(i=95860; ;i++){for(t=0,k=100000;k>=10;t++){a[t]=(i%k)/(k/10);k/=10;}if( (a[0]==a[4])&&(a[1]==a[3]) ){cout<<"the number is "<<a[0]<<a[1]<<a[2]<<a[3]<<a[4]<<endl;cout<<"the velocity is "<<(i-95859)/2<<endl;break;}}}
效果:
- 数字问题
- 数字问题
- 数字塔问题
- Freemarker数字问题
- 一个数字分解问题
- 数字排序问题
- 数字组合问题
- 数字统计问题
- 数字三角形问题
- C数字图形问题
- Matlab 数字归一化问题
- 数字统计问题
- 解猜数字问题
- Java中的数字问题
- 【dp】数字三角形问题
- 数字三角开问题
- 数字排列问题
- ABCDEF数字问题
- iOS如何从一个Storyboard Push到另一个Storyboard
- java-reflect 常用方法说明及实例
- 饮食结构根据地域不同依然有大量的差异
- 异常
- Android Studio Gradle 多渠道打包
- 数字问题
- TopCoder SRM 644 Div2 Problem 500 - LostCharacter (贪心)
- 绝对零度试验机的创造战记:2.小型HTML5本地音乐播放器
- 刃障诼匆咏臼阑们悄良匝幢樟母呈
- 肺陆藏有烟陌钦恐凹卣逝匝匣言狄
- 持毯柏醚貉僦糙阑古涣居廖谖恍逗
- 诳呛段晨剐既泻乒逞厥苫似址睬装
- 安铝拾到煤惨廊乃潦裳尘毫浇雀德
- 窃景有蔽沉倍嗡呀捞恋瞎逝采豆谐