当前位置: 代码迷 >> C语言 >> 大家看一下,m=1000000时怎样正常输出数据呢?
  详细解决方案

大家看一下,m=1000000时怎样正常输出数据呢?

热度:50   发布时间:2005-04-30 13:25:00.0
大家看一下,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; }

搜索更多相关的解决方案: 数据  输出  

----------------解决方案--------------------------------------------------------
把定义类型改为长整型的看看
----------------解决方案--------------------------------------------------------
那是不行的。 long int sum[1000000] 这只是将sum[]的值定为长整型,而[ ]里面仍不行
----------------解决方案--------------------------------------------------------
以下是引用mkmny在2005-4-30 14:11:46的发言: 那是不行的。 long int sum[1000000] 这只是将sum[]的值定为长整型,而[ ]里面仍不行
哦~,谢谢指点,又学到了
----------------解决方案--------------------------------------------------------
可不可以用宏定义啊
#define M 10000
----------------解决方案--------------------------------------------------------
不行!因为平常数组下标不能为long型数据,如果非要这么做,自己构建一个函数,用for控制n 个数组来模拟,!
----------------解决方案--------------------------------------------------------
malloc(1000000*sizeof(int));

这个怎么样?
----------------解决方案--------------------------------------------------------
有三个办法
1。没有空间,就用时间来换

2。换个编译器

3。学习一下TC下的扩展内存的使用
----------------解决方案--------------------------------------------------------
Stack Overflow.这个是提示信息
----------------解决方案--------------------------------------------------------
  相关解决方案