【发布时间】:2010-10-04 02:36:38
【问题描述】:
我的代码贴在下面。当我运行这个程序时,它一直在计算。我使用的是旧的 Turbo C++ 编译器。这样的程序需要多长时间才能执行?我等了大约 5 分钟,但没有任何输出。
/*The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.
*/
#include<stdio.h>
#include<conio.h>
#define TWO_MILLION 2*1000*1000
int IsPrime(long unsigned int num);
int main()
{
long unsigned int i,sum=0;
clrscr();
for(i=2;i<TWO_MILLION;i++)
{
if(IsPrime(i))
sum+=i;
}
gotoxy(25,25);
printf("%ld",sum);
getch();
return 0;
}
int IsPrime(long unsigned int num)
{
int flag=1;
long unsigned int i;
for(i=2;i<num;i++)
{
if(num%i==0)
{
flag=0;
break;
}
}
return flag;
}
【问题讨论】:
-
"旧 Turbo C++ 编译器" 1. WHY OH WHY OH WHY OH WHY? 2. 那不是 C++ 问题,不是 C 问题吗?
-
史诗:#define TWO_MILLION 2*1000*1000
-
我的大学课程计划已经过时了。
-
好吧,让它每 100 或 1000 或 10000 次操作输出一些东西。另外,我怀疑你需要一个
BigInt来保存结果而不是溢出你也可以写一个'。每 10 次找到一个素数,但请确保将其重定向到一个文件以保持速度不错。然后分别查看文件的大小/内容。您可能希望仅通过查找 sqrt(N) 来加快素数测试。 -
我以前从未见过
int、unsigned和long都在同一个声明中使用过!