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
博客围绕区间内真素数的查找展开,给出了真素数的定义,即正整数P为素数且其反序也为素数。要求输入两个数M和N,找出M和N之间(包括M和N)的真素数并按从小到大输出,用逗号间隔,若无则输出No,还提供了参考代码链接。
3054

被折叠的 条评论
为什么被折叠?



