有关素数的综合运用问题
我想找出同时满足超级素数、逆向超级素数和金蝉素数这三个条件的素数,模仿别人的程序,自已写了一个,但未成功,如下,请高手改一改,谢谢!#include<stdio.h>
int prime(int x)
{
int i,j=1;
if(x==0||x==1)j=0;
else
for(i=2;i<x;i++)
{
if(x%i==0)
{
j=0;
break;
}
}
return j;
}
int cjss(int x) /*此函数判断一个数是否它本身为素数且从个位开始依次去掉一位数字后仍为素数*/
{
if(x<10)
{
if(prime(x)==1)return 1;else return 0;
}
else if(x<100)
{
if(prime(x)==1&&prime(x/10)==1)return 1;else return 0;
}
else if(x<1000)
{
if(prime(x)==1&&prime(x/10)==1&&prime(x/100)==1)return 1;
else return 0;
}
else if(x<10000)
{
if(prime(x)==1&&prime(x/10)==1&&prime(x/100)==1&&prime(x/1000)==1)
return 1; else return 0;
}
}
int ncjss(int x) /*此函数判断一个数是否它本身为素数且从高位开始依次去掉一位数字后仍为素数*/
{
if(x<10)
{
if(prime(x)==1)return 1;else return 0;
}
else if(x<100)
{
if(prime(x)==1&&prime(x%10)==1)return 1;else return 0;
}
else if(x<1000)
{
if(prime(x)==1&&prime(x%10)==1&&prime(x%100)==1)return 1;
else return 0;
}
else if(x<10000)
{
if(prime(x)==1&&prime(x%10)==1&&prime(x%100)==1&&prime(x%1000)==1)
return 1; else return 0;
}
}
int jcss(int x) /*此函数判断一个数是否它本身为素数且从两头开始同时、依次去掉一位数字后仍为素数*/
{
if(x<1000)
{
if(prime(x)==1&&prime(x%10)==1&&prime(x/10)==1)return 1;
else return 0;
}
else if(x<10000)
{
if(prime(x)==1&&prime(x%100)==1&&prime(x/100)==1)
return 1; else return 0;
}
}
void main()
{
int i,count=0;
printf("同时满足超级素数、逆向超级素数和金蝉素数这三个条件的素数有:\n");
for(i=100;i<=10000;i++)
{
if(prime(i)==1 && cjss(i)==1 && ncjss(i)==1 && jcss(i)==1)
{
count++;printf("%d\t",i);if(count%10==0)printf("\n");
}
}
}
313,317,797不是金蝉素数。
[ 本帖最后由 hcjiaozhi 于 2013-4-22 22:44 编辑 ]