一个素数,依次从低位去掉一位,二位,……,若所得的各数仍都是素数,则称超级素数。
例如:7331是个4位超级素数,因为7,73,733,7331均为素数.
试求1000~n之内(1000<n<9999):
(1)超级素数的个数
(2)所有超级素数之和
(3)最大的超级素数。
输入一个整数n(n<9999)
输出三个整数,分别为超级素数的个数,所有超级素数之和,最大的超级素数;
例如:输入9999,
输出
16
68910
7393
#include<stdio.h>
int len(int n)
{
if(n/1000!=0)
return 4;
else if(n/100!=0)
return 3;
else if(n/10!=0)
return 2;
else
return 1;
}
void main()
{
int n,t=1,m=0,i,j,k=0,max=0,sum=0,l=0,s[10000]={0};
scanf("%d",&n);
for(j=n;j>1000;j--)
{
for(i=2;i<j;i++)
{if(j%i!=0)
t++;
else
break;
if(t==j-1)
m=j;}
t=1;
k=0;
while(m)
{
for(i=2;i<m;i++)
if(m%i!=0)
t++;
if(t==m-1)
k++;
m/=10;
}
t=1;
if(k==len(j))
s[j]=j;
}
for(i=0;i<10000;i++)
if(s[i]!=0)
{
sum+=s[i];
l++;
if(max<s[i])
max=s[i];
}
printf("%d\n%d\n%d",l+1,sum,max);
}
不知哪里错了。。。求改