主要通过编写函数实现
有多组数据测试
121
16961
3 Yes No
5 Yes No
几位数:(这里不懂的可以自己列举数字试一下)
int jiweishu(int n){ int i; while(n>0){ n/=10; i++; } return i; }
素数:素数指的是大于1且除了1和它本身外无其它因数的数字(注意:1不是素数)
bool isprime(int n){ for(int i = 2;i<=sqrt(n);i++){ if(n%i==0||n==1) return 0; } return 1; }
回文数(对称数)
顾名思义左右对称,可看作正序等于倒序(此处比较写的是全部比较,也可以比较一半)
bool duichenshu(int n){ int digit = jiweishu(n); int i = 0,a[50],m,c; m = n; while(n>0){ a[i] = n%10;//所得位数是逆序的 i++; n/=10; } for(i = digit-1;i>=0;i--){//得到正序的各个位数 c=m%10; m /=10; if(a[i]!=c)return 0;//正逆比较 } return 1; }
bool类型是判断真假的类型,只能返回1和0;这些函数也都可以直接写成int类型
例如:
int isprime(int n)
代码实现:
#include#include #include using namespace std; //几位数 int jiweishu(int n){ int i; while(n>0){ n/=10; i++; } return i; } //素数 bool isprime(int n){ for(int i = 2;i<=sqrt(n);i++){ if(n%i==0||n==1) return 0; } return 1; } //回文数 bool duichenshu(int n){ int digit = jiweishu(n); int i = 0,a[50],m,c; m = n; while(n>0){ a[i] = n%10;//所得位数是逆序的 i++; n/=10; } for(i = digit-1;i>=0;i--){//得到正序的各个位数 c=m%10; m /=10; if(a[i]!=c)return 0;//正逆比较 } return 1; } int main(){ int n; while(cin>>n){ cout<
运行结果:
注意:“==”与“=”意义不一样,别写错了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)