問題:
求m~n(m≥10,n≤10000)之間的回文素數,所謂回文素數,即這個數既是回文又是素數。程序首先要判斷某個數是否是回文,再判斷是否是素數。如果是回文素數,則保存於數組中,並按6位域寬輸出,每行輸出5個。
輸入:
m n
輸出:
m~n之間的回文素數,每個數占6位,每行限輸出5個。
例如:
代碼:
#include <stdio.h> #include <math.h> void main() { int m,n,i,j,k,sum; int a[1000],t=1; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) { int s1=1,s2=1; sum=0;j=i; while(j>0)//判斷回文 { sum=sum*10+j%10; j=j/10; } if(sum==i) { s1=0; } for(k=2;k<=sqrt(i);k++)//判斷素數 { if(i%k==0) s2=0; } if(s1==0 && s2==1) { a[t++]=i; } } for(i=1;i<t;i++) { if(i%5!=0) printf("%6d",a[i]); else printf("%6d\n",a[i]); } }