C 我想知道什么';这是对(i=2;i<;=Number/2;i+;+;)for循环的解释

C 我想知道什么';这是对(i=2;i<;=Number/2;i+;+;)for循环的解释,c,for-loop,conditional-statements,primes,C,For Loop,Conditional Statements,Primes,您好,我有一个从特定范围获取素数的代码,我正在分析它,因为它来自互联网,我只是想知道for循环for(I=2;I2是组合的最低可能因子(记住,1是素数因子) Number/2是最小因子的上界。我说an上界,因为更好的上界应该是sqrt(Number)。推理:大于的任何因子p√N必须有一个相应的系数q=N/p,该系数必须小于√Nfor循环必须遵循特定的结构 第一条语句(i=2)表示计数器必须从2开始。第二条语句(i)表示(Number=Minimum;Number首先,2是组合的最低因子,而Num

您好,我有一个从特定范围获取素数的代码,我正在分析它,因为它来自互联网,我只是想知道for循环
for(I=2;I
2
是组合的最低可能因子(记住,1是素数因子)


Number/2
是最小因子的上界。我说an上界,因为更好的上界应该是
sqrt(Number)
。推理:大于
的任何因子
p
√N
必须有一个相应的系数
q
=
N/p
,该系数必须小于
√N

for
循环必须遵循特定的结构


第一条语句(
i=2
)表示计数器必须从2开始。第二条语句(
i
)表示(Number=Minimum;Number首先,2是组合的最低因子,而Number/2是从2到Number/2的条件下的最高极限。我们可以停在
Number/2
处,因为如果
Number
是素数,那么它在
Number/2
Number
之后仍然是素数

使用这些限制的目的是通过减少循环计数来提高性能

为什么要从两个开始,为什么要从两个开始
ihijay,谢谢你的回答,但是OP不明白为什么它现在使用2和Number/2循环是如何工作的啊,错过了。明白了。
#include <stdio.h>
 
int main()
{
  int i, Number, count, Minimum, Maximum; 

  printf("\n Please Enter the Minimum & Maximum Values\n");
  scanf("%d %d", &Minimum, &Maximum);
 
  printf("Prime Numbers Between %d and %d are:\n", Minimum, Maximum);  
  for(Number = Minimum; Number <= Maximum; Number++)
  {
    count = 0;
    for (i = 2; i <= Number/2; i++)
    {
      if(Number%i == 0)
      {
    count++;
    break;
      }
    }
    if(count == 0 && Number != 1 )
    {
       printf(" %d ", Number);
    }  
  
  }
  return 0;
}
n = a * b