主要通过编写函数实现
| Description |
| 输入一个自然数,判断它是几位数,并判断它是否是对称数和素数。 有多组数据测试 |
| Input |
| 输入一个自然数 |
| Output |
| 正整数的位数、是否是对称数和是否是素数。 |
| Sample Input |
| 97 121 16961 |
| Sample Output |
| 2 No Yes 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<
运行结果:
注意:“==”与“=”意义不一样,别写错了



