微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在c中运行代码的窗口中的奇怪的错误

我已经写了一些代码解决英国的信息奥林匹克问题1(2012)在C。 如果对任何人有任何帮助,或者可能感兴趣的话,程序会find一个数字的唯一主要因素的乘积。 如果数字是素数,则返回原始数字。

它应该可以达到1 000 000的input,而且在linux和mac上编译时也是如此。

由于某些原因,当它在Windows上编译(使用mingw编译器)时,对于520558以上的input不起作用!

这可能是与520558整数数组的声明很长,但我不知道如何补救它。

如何从Windows系统将文件从Python脚本复制到任何其他远程服务器?

我怎么会在Windows 64位与python调用32位exes?

无法find或加载Qt平台插件“窗口” – cx_freeze(.exe)

如何在.NET中确定我的Monitor的真实像素大小?

DIdiskQuotaUser泄漏文件句柄

任何帮助将非常感激

谢谢。

码:

#include <stdio.h> #include <stdlib.h> int main(int argc,char* argv[]){ printf("Please enter your input: "); int input; scanf("%d",&input); int numbers[input-2]; for (int i=0;i<input-2;i++) { numbers[i] = i+2; } for (int i=0;i<input-2;i++) { if(numbers[i] == 0) { continue; }else{ for (int j=(i+2)*2;j<input;j+=numbers[i]){ numbers[j-2] = 0; } } } int product = 1; for (int i=0;i<input-2;i++) { if(numbers[i]!=0){ if(input%numbers[i]==0) { product *= numbers[i]; } } } if(product == 1){ printf("%u",input); }else{ printf("%u",product); } printf("n"); // Get rid of this on mac and linuxs system("PAUSE"); return 0; }

如何在Tkinter窗口中打开一个exe文件

如何创build一个DLL库的Python包装

Windows上最小的生产Django服务器

如何从一个不同的过程closures一个窗口

(C#)Windows窗体 – 透明的背景,同时捕获鼠标事件?

int numbers[input-2];

这将在堆栈上创建一个整数数组。 堆栈的大小有限; 这通常是几个兆字节或更少的二的幂。 520558是可疑接近2 ^ 19,建议2Mb堆栈区域。

如果你正在处理这么大的数组,你应该使用堆而不是:

int * numbers = (int*)malloc((input-2)*sizeof(int)); . . . free(numbers); return 0;

尝试用这个替换你的numbers声明:

int* numbers = (int *) malloc((input-2)*sizeof(int));

正如提到的那样,这将动态分配堆上的数组,避免任何可能的堆栈问题。 完成后您还应该释放它:

free(numbers);

在堆上而不是堆栈上分配numbers变量会更好:

#define MAxnuMS 1000000 int numbers[MAxnuMS]; int main() { ... }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐