所以我正在尝试创建一个函数,该函数将返回 1 或 0,具体取决于给定数字是否为质数。
注意:我确定给定的数字是自然的。大于 1
我原来的功能:
int Prime(int a) {
int i;
for (i = 2; i*i <= a; i++)
{
if ((a % i) == 0)
return 0;
};
return 1;
}
工作得很好,但不知何故......慢。我正在寻找一种不使用数组的更有效的算法。我的第二次尝试:
int Prime(int a) {
int i;
if (a == 2)
return 1;
if ((a % 2) == 0)
return 0;
for (i = 3; i*i <= a; i = i + 3)
{
if ((a % i) == 0)
return 0;
};
return 1;
}
结局很糟糕。有一些数字(我无法真正想象)小于MAX_INT
,这会导致这个特定算法的工作非常缓慢。所以,我有两个问题:
我升级的算法有问题吗?
有没有办法更有效地完成这项任务?