已知某一整数,求各位数字均为素数,而且各位数字之和也为素数,例如232,2+3+2=7也是素数。用c语言这样做为什么错了
#include<stdio.h>
fun(int n)
{
int k,r;
for(k=1;k<n-1;k++)
{r=n%k;
if(r==0) break;}
if(k==n)
return 1;
else
return 0;
}
void main()
{
int i,j,k,sum;
for(i=1;i<=1000;i++)
{
k=i;
sum=0;
while(k)
{
j=k%10;
if(fun(j)==0)break;
sum+=j;
k/=10;
}
if(fun(sum)&&k==0)
printf(“%d\n”,k);
}
#include<stdio.h>
fun(int n)
{
int k,r;
for(k=1;k<n-1;k++)
{r=n%k;
if(r==0) break;}
if(k==n)
return 1;
else
return 0;
}
void main()
{
int i,j,k,sum;
for(i=1;i<=1000;i++)
{
k=i;
sum=0;
while(k)
{
j=k%10;
if(fun(j)==0)break;
sum+=j;
k/=10;
}
if(fun(sum)&&k==0)
printf(“%d\n”,k);
}
}
解决方案
200
1.你的fun函数写的有问题,k=1应该是k=2,k<n-1应该是k<=n-1
2.main函数里printf的应该是i,而不是k
2.main函数里printf的应该是i,而不是k
#include<stdio.h>
int fun(int n)
{
int k,r;
for(k=2;k<=n-1;k++)
{
r=n%k;
if(r==0)
break;
}
if(k==n)
return 1;
else
return 0;
}
void main()
{
int i,j,k,sum;
for(i=1;i<=1000;i++)
{
k=i;
sum=0;
while(k)
{
j=k%10;
if(fun(j)==0)break;
sum+=j;
k/=10;
}
if(fun(sum)&&k==0)
printf("%d\n",i);
}
}