#include<stdio.h>int main(){int m,n,c,b,k,p,q,r,leap;scanf("%d%d",&m,&n);r=0;leap=0;for(k=m;k>=m&&k<=n;k++){b=0;p=k;while(k>0){c=k%10;b=b*10+c;k=k/10;}if(b==p){for(q=2;q<p;q++)if(p%q==0)break;if(q==p){leap=1;r=r+1;}elseleap=0;}elseleap=0;}if(leap=1)printf("%d",p);while(r%5==0)printf("\n");return 0;}
1 回答

BIG陽
TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊
程序開始部分沒什么問題,結(jié)尾一個接一個
是自己想亂了還是著急了?
如果剛學(xué)C 最好還是先列個流程 然后再寫,不容易出錯
改正后的程序如下,原因見注釋
#include<stdio.h> int main() { int m,n,c,b,k,p,q,r,leap; scanf ( "%d%d" ,&m,&n); r=0; leap=0; for (k=m;k>=m&&k<=n;k++) { b=0; p=k; while (k>0) { c=k%10; b=b*10+c; k=k/10; } if (b==p) { for (q=2;q<p;q++) if (p%q==0) break ; if (q==p) { leap=1; r=r+1; } else leap=0; } else leap=0; k = p; //恢復(fù)k的值,下次循環(huán)用用的 //輸出語句移到循環(huán)內(nèi),對每個回文素數(shù)做輸出 if (leap==1) // ==判斷 { //只有本身為回文素數(shù)時,判斷是否需要輸出換行 printf ( "%d " ,p); if (r%5==0) //一次判斷 不然死循環(huán)輸出換行了 printf ( "\n" ); } } return 0; } |
- 1 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報
0/150
提交
取消