找出1000到9999之间整数满足千位百位十位个位之和为素数的数

来源:百度知道 编辑:UC知道 时间:2024/06/17 11:23:31

除了一楼说的用程序来求结果,人工方法如下:

1000到9999,四位之和最小为1,最大为36,这里面的素数共有:1、2、3、5、7、11、13、17、19、23、29、31。

1分成4个数只能是1、0、0、0,组成一个四位数只有1一个,即:1000
2分成4个数可以是1、1、0、0,可以是2、0、0、0,组成一个四位数有4个,即:1001、1010、1100、2000
……
31分成4个数可以是9、9、9、4,可以是9、9、8、5或9、9、7、6或9、8、8、6或9、8、7、7或8、8、8、7,组成四位数为9994、9949、9499、4999,9985、9958、9859、9895、9589、9598、8995、8959、8599、5899、5989、5998……共有4×2+12×3=44个

#include<stdio.h>
#include<math.h>
void main()
{
int m,a,b,c,d,sum;
clrscr();
for(m=1000;m<10000;m++)
{
a=m/1000;
b=m%1000/100;
c=m%100/10;
d=m%10;
sum=a+b+c+d;
if(f(sum)==1)
printf("%d\t",m);
}
}
int f(int m)
{
int i,k=1;
for(i=2;i<=sqrt(m);i++)
if(m%i==0)
k=0;
return k;
}

这个程序应该可以求出,不过输出结果过多,很难查看结果,可以通过window--output选项查看结果