已知某一整数,求各位数字均为素数,而且各位数字之和也为素数,例如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); } }