展开全部
将回文素数2单独处理一下,然后从3开始只考察奇数,这样可以提高时效。自定义一个判断素数和判断回文数的函数,在主函数用一个循环调用这两个函数来完成操作。另,百位为偶数的数可以跳过(因为它的回文数肯定不是素数)。代码如下:
#include "stdio.h"
int prime(int n){//判断n是否为素数
int i;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int palindrome(int n){//判断n是否为回文数
if(n<10)
return 1;
else if(n<100)
return n%10==n/10 ? 1 : 0;
else
return n%10==n/100 ? 1 : 0;
}
int main(int argc,char *argv[]){
int n,t;
printf(" 2");//单独处理2
for(n=3;n<1000;n<12 || ((t=n/100)&1) ? n+=2 : n=t*100+101)//n这样增值可跨过百位为偶数的数,以进一步提高时效
if(palindrome(n) && prime(n))
printf("%4d",n);
printf("\n");
return 0;
}
运行结果如下图L
2013-11-19
展开全部
进行两次循环
第一次是进行加一
第二次循环数一直除1+1直到加到比本身小1
如果能整除
进行下一次循环
反之输出
返回进行下一次循环
这就是思路
如果要例子也可以补充下问题
第一次是进行加一
第二次循环数一直除1+1直到加到比本身小1
如果能整除
进行下一次循环
反之输出
返回进行下一次循环
这就是思路
如果要例子也可以补充下问题
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-19
展开全部
编写程序,找出大于等于a,并且小于等于b的所有素数回文数。
第一行包括两个正整数a和b(1≤a≤b≤108)。
输出满足条件的所有素数回文数,每行一个数,从小到大的排序。
第一行包括两个正整数a和b(1≤a≤b≤108)。
输出满足条件的所有素数回文数,每行一个数,从小到大的排序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-19
展开全部
#include <stdio.h>
#include <math.h>
int hw(int n) //判断回文数
{
int t,r=0;
for(t=n;t;t/=10) //把n从个位到最高位取反
r=r*10+t%10;
return r==n;
}
int ss(int n) //判断素数
{
int i;
for(i=2;i<=sqrt(n);i++) //从2到n的平方根判断能否被n整除
if(n%i==0)
return 0;
return 1;
}
void main()
{
int i,c=0;
for(i=2;i<1000;i++)
if(hw(i) && ss(i))
{
printf("%5d",i);
if(++c%10==0) //每行输出10个数
printf("\n");
}
}
#include <math.h>
int hw(int n) //判断回文数
{
int t,r=0;
for(t=n;t;t/=10) //把n从个位到最高位取反
r=r*10+t%10;
return r==n;
}
int ss(int n) //判断素数
{
int i;
for(i=2;i<=sqrt(n);i++) //从2到n的平方根判断能否被n整除
if(n%i==0)
return 0;
return 1;
}
void main()
{
int i,c=0;
for(i=2;i<1000;i++)
if(hw(i) && ss(i))
{
printf("%5d",i);
if(++c%10==0) //每行输出10个数
printf("\n");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-19
展开全部
#include<stdio.h>
void main()
{
int a,b,c,d,e,f,h;
for(a=1;a<1000;a++)
{for(b=1,c=0;b<=a;b++)<br/> if(a%b==0) c++;<br/> if(c<=2)<br/> {if(a<10)printf("%d ",a);<br/> if(a>=10&&a<100) {d=a%10;e=(a-d)/10;if(d==e) printf("%d ",a);}
if(a>=100&&a<1000){d=a%10;e=a/100;if(d==e)printf("%d ",a);}
if(a>=1000&&a<10000){d=a%10;e=((a-d)/10)%10;f=((a-d-10*e)/100)%10;h=(a-d-10*e-100*f)/1000;if(d==h&&e==f)printf("%d ",a);}}}
}
这样就可以了
void main()
{
int a,b,c,d,e,f,h;
for(a=1;a<1000;a++)
{for(b=1,c=0;b<=a;b++)<br/> if(a%b==0) c++;<br/> if(c<=2)<br/> {if(a<10)printf("%d ",a);<br/> if(a>=10&&a<100) {d=a%10;e=(a-d)/10;if(d==e) printf("%d ",a);}
if(a>=100&&a<1000){d=a%10;e=a/100;if(d==e)printf("%d ",a);}
if(a>=1000&&a<10000){d=a%10;e=((a-d)/10)%10;f=((a-d-10*e)/100)%10;h=(a-d-10*e-100*f)/1000;if(d==h&&e==f)printf("%d ",a);}}}
}
这样就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询