大家看一下,m=1000000时怎样正常输出数据呢?
一个数如75, 则规定d(75)=75+5+7=87。有一种数叫self-number,就是无论n为何值,都无法用d(n)表示 例如1 3 5 7 9 20 31 42 53 64…………9903 9914 9925 9927 9938 9949 9960………………………………要输出1——1000000内所有的此类数
作第二次循环感觉是一种的算法,恳求更好的方法
/*差不多了,但有一个问题
当m=1000000时,数组太大了,无法编译
重新定义了sum[1000][1000];
仍报The array is too large
帮忙看一下,有没有解决方法
*/
#include "Stdio.h"
#include "Conio.h"
int main(void)
{
int i, m,n,j=0;
int a[5];
int sum[10000]={0};/*用于存放非self-number*/
printf("\n");
for(m=1;m<=10000;m++)
{
i=m;
for(n=0;n<=4;n++)
{
a[n]=i%10;
i=i/10;
sum[m]=sum[m]+a[n];
}
sum[m]=sum[m]+m;
}
/*又作第二次循环,感觉很不好。*/
for(m=0;m<=10000;m++)
{
for(n=1;n<=10000;n++)
if(m==sum[n]) j=j+1; /*用j判别是否为self-num*/
if(!j) printf("%d ",m);
j=0;
}
getch();
return 0;
}