首页 > 解决方案 > 我想知道 for 循环 for(i=2; i<=Number/2; i++) 的解释是什么

问题描述

嗨,我有一个从特定范围内获取素数的代码,我正在分析它,因为它来自互联网,我只是想知道 for 循环是什么for(i=2; i<=number/2; i++);i<=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;
}

标签: cfor-loopconditional-statementsprimes

解决方案


2是复合的最小可能因子(1 是素数的因子,请记住)。

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


推荐阅读