回复 9楼 pcbaichi
只要加上一句Sleep(10);就可以了
以下是引用观弈寒儒在2011-2-27 13:21:24的发言:
很大程度上是相同的,少了一个for,应该比较优越,你这个程序最大的不足是运行时CPU的占有率是100%。
很大程度上是相同的,少了一个for,应该比较优越,你这个程序最大的不足是运行时CPU的占有率是100%。
一个程序的运行时 CPU 占用率是 100% 不是好事吗~ 说明资源利用充分。
程序代码:
#include <stdio.h>
#include <memory.h>
#define M 10000
char isprime[M];
int main(int argc, const char *argv[])
{
memset(isprime, 1, sizeof(isprime));
isprime[0] = isprime[1] = 0;
int i, j;
for (i = 2; i < M; i++) // set isprime.
{
if (isprime[i]) {
for (j = i+i; j < M; j += i)
isprime[j] = 0;
}
}
/*
for (i = 0; i < M; i++)
if(isprime[i]) printf("%d", i);
*/
// test Goldbach
int flag = 0;
for (i = 6; i < M; i += 2) {
for (j = 3; j < i; j++)
if (isprime[j] && isprime[i-j]) {
// printf("%d = %d + %d\n", i, j, i-j);
break;
}
if (j == i) {
flag = 1;
printf("failed number: %d\n", i);
}
}
if (!flag) printf("all test passed.\n");
return 0;
}