23:区间内的真素数
总时间限制: 1000ms 内存限制: 65536kB
描述
找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。
真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。
输入
输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。
输出
按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,逗号间隔。如果之间没有真素数,则输出 No。
样例输入
10 35
样例输出
11,13,17,31
题目链接:http://noi.openjudge.cn/ch0113/23/
1 #include<stdio.h> 2 #include<math.h> 3 int isPrime(int n)//判断n是否质数 4 { 5 int i,t=sqrt(n); 6 for(i=2;i<=t;i++) 7 { 8 if(n%i==0) return 0; 9 } 10 return 1; 11 } 12 int isPrime2(int n)//判断n的反序是否质数 13 { 14 int i,t=0; 15 while(n>0) 16 { 17 t=t*10+n%10; 18 n=n/10; 19 } 20 return isPrime(t); 21 } 22 int main(int argc, char *argv[]) 23 { 24 int m,n,i,t=0; 25 scanf("%d%d",&m,&n); 26 for(i=m;i<=n;i++) 27 { 28 if(isPrime(i)&&isPrime2(i)) 29 { 30 if(t==0) { printf("%d",i); t=1; } 31 else printf(",%d",i); 32 } 33 } 34 if(t==0) printf("No\n"); 35 return 0; 36 }