1411:区间内的真素数
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 17046 通过数: 6833
【题目描述】
找出正整数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
【参考代码】
#include <stdio.h> #include <math.h> int reverse_num(int n) { int v=n,sum=0; while(v>0) { sum=sum*10+v%10; v/=10; } return sum; } int is_prime(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) return 0; return 1; } int main() { int i,m,n; int is_first=1,found=0; scanf("%d%d",&m,&n); for(i=m;i<=n;i++) { if(is_prime(i) && is_prime(reverse_num(i))) { found=1; if(is_first) { printf("%d",i); is_first=0; } else { printf(",%d",i); } } } if(!found) { printf("No\n"); } return 0; }
http://ybt.ssoier.cn:8088/problem_show.php?pid=1411