我用这个编译器编译这段代码。对于数字,我写 18446744073709551615 (2^64-1)。Pelles 的可执行文件说“18446744073709551615 是素数”,但 GCC 的可执行文件说“18446744073709551615 不是素数”。为什么结果不一样?
#include <stdio.h>
#include <math.h>
int main(void)
{
unsigned long long number;
printf("number: ");
scanf("%llu",&number);
unsigned long trsq=truncl(sqrtl(number));
char s=1;
for(unsigned long i=2;i<=trsq;i++) {
if (number%i==0) {
s=0;
break;
}
}
if (s==1) {
printf("%llu is prime\n",number);
} else {
printf("%llu isn't prime\n",number);
}
return 0;
}
编辑:
我已经测试过,gcc 给出 12,pelles c 给出 8 的 sizeof(long double)。