C 素数逻辑,循环中的n/2条件

C 素数逻辑,循环中的n/2条件,c,primes,primality-test,C,Primes,Primality Test,以下代码用于素数。我想知道为什么我们使用I,尽管这是C程序。但C和Java的素数逻辑是相同的 素数 每个只能被1整除的自然数本身就是素数。 同样,2是第一个素数 例如,我们想测试数字100是否是素数。我们可以做一次试算来测试100的素数 让我们看看100的所有除数: 2,4,5,10,20,25,50 这里我们看到最大的因子是100/2=50。所有n都是这样:所有除数都小于或等于n/2 因此,这里条件i任何数字n的最大因素必须是这甚至不是java。此外,它更多地是对一些代码的逆向工程,而不是实际

以下代码用于素数。我想知道为什么我们使用
I,尽管这是C程序。但C和Java的素数逻辑是相同的

素数
每个只能被1整除的自然数本身就是素数。 同样,2是第一个素数

例如,我们想测试数字100是否是素数。我们可以做一次试算来测试100的素数

让我们看看100的所有除数:

2,4,5,10,20,25,50

这里我们看到最大的因子是100/2=50。所有n都是这样:所有除数都小于或等于n/2


因此,这里条件i任何数字n的最大因素必须是这甚至不是java。此外,它更多地是对一些代码的逆向工程,而不是实际问题的解决:DWhat second loop?只有一个循环。公平地说,没有很好地解释它。我不知道为什么代码使用
n/2
,特别是因为你只需要检查一个数的平方根的因子就可以确定素数。我看到了你关于n/2的链接,并用。。从技术上讲,你没有错,但你没有尽可能地对。@WaiHaLee我看到了,这是另一种获得循环极限的方法,以更有效的方式检查素数,但它与这个特定问题无关,问题是关于n/2的澄清,而不是什么是获得素数的最佳方法:)
#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;
}