【发布时间】:2017-10-26 16:37:55
【问题描述】:
以下代码用于质数。我想知道为什么我们在循环中使用i<=n/2 条件。
C 程序:
#include <stdio.h>
int main()
{
int n, i, flag = 0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2; i<=n/2; ++i)
{
// condition for nonprime number
if(n%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("%d is a prime number.",n);
else
printf("%d is not a prime number.",n);
return 0;
}
【问题讨论】:
-
这甚至不是java。
-
另外,它更多的是关于逆向工程发现的一些代码 OP,而不是关于实际问题的解决:D
-
第二个循环是什么?只有一个循环。
-
公平地说,the site where this code is copied from 并没有很好地解释它。
-
我不知道为什么代码使用
n/2,特别是因为你只需要检查一个数的平方根的因数来确定素数。
标签: c primes primality-test