当我尝试输入大量数字(约1000万)时,怎么会收到“命令已终止”的消息?该程序显示数字是否为素数。输入大数字时命令终止
见下面的代码:
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
int main (int argc, char *argv[])
{
unsigned long long number;
bool prime (unsigned long long);
printf ("Enter a positive integer greater than 1: ");
scanf ("%llu", &number);
prime(number) ?
printf ("%llu is a prime.\n", number):
printf ("%llu is not a prime.\n", number);
return EXIT_SUCCESS;
}
bool prime (unsigned long long number)
{
unsigned long long i, j;
bool isPrime[number + 1];
for (i = 2; i <= number; i++)
isPrime[i] = true;
for (i = 2; i <= number - 1; i++)
for (j = 1; i*j <= number; j++)
isPrime[i*j] = false;
return isPrime[number];
}
行'bool isPrime [number + 1]'编译没有错误? –
@barakmanos它是C,而不是C++(C99支持可变长度数组) –
至少对我而言,是的。我正在使用GCC。 – vxs8122