为什么我这样写函数直接跳出
#include<stdio.h>
#include<math.h>
int z(int i){
for(int o=2;o<=floor(sqrt(i)+0.5);o++){
if(i%o==0)return 0;
}
return 1;
}
int h(int i){
if(i==5&&i==7)return 1;
else if(101<=i&&i<=999&&(i%100==i/10))return 1;
else if(10001<=i&&i<=99999&&(i/10000==i%100000))return 1;
else if(1000001<=i&&i<=9989899&&(i%10000000==i/1000000))return 1;
return 0;
}
int main(){
int a,b;
scanf("%d %d",&a,&b);
for(int i=a;i<=b;i++){
if(z(i)==1&&(h(i)==1)){
printf("%d\n",i);
}
}
return 0;
}
int h(int i) 回文数判断函数存在问题,比如101,i%100 == i/10 ,101%100 = 01=1, 101/10 = 10,两者不等,回文数判断函数建议用下面这种:
int is_huiwen(int p) {
int ans, temp;
temp = p;
ans = 0;
while (temp) {
ans = ans * 10 + temp % 10;
temp /= 10;
}
if(ans == p)
return 1;
return 0;
}