首页 > 代码库 > 拼接素数

拼接素数

编写程序求出10万以内的所有素数,然后再判断这些素数中
哪些是由素数拼接而成的。例如素数23就符合条件,
23本身是素数,其由素数2,和素数3拼接(连接)组成。
素数29就不满足条件,2是素数,而9不是素数。
素数307不满足条件,不能忽略0. 需要把符合条件的
拼接素数全部打印出来,并统计个数。

举几个例子
99767 --> 997 67 满足
15773 --> 157 7 3 或者 157 73 满足
17093 --> 1709 3 满足
#include<stdio.h>
#include<math.h>
int issu(int i)
{
if(i<2)
return 0;
int j=1,x;
for(x=2;x<=sqrt(i);x++)
{
if(i%x==0)
{
j=0;
}
}
return j;
}
int ispin(int i)
{
int a,b=1,t=0;
if(i<10)
return 0;
else
{
for(;i>10;)
{
a=(i%10)*b+t;
b=b*10;
i=i/10;
if(a==t)
continue;
t=a;
if((issu(i)||ispin(i))&&(issu(t)||ispin(t)))
return 1;
}
}
return 0;
}
int main()
{
int f=0,i,p=0;
int a[10000];
a[0]=2;
for(i=3;i<100000;i=i+2)
{
if(issu(i))
{
f++;
a[f]=i;
}
}
for(;f>=0;f--)
{
if(ispin(a[f]))
{
p++;
printf("%d\t",a[f]);
}
}
printf("\n%d",p);
return 0;
}

拼接素数