C 我想知道什么';这是对(i=2;i<;=Number/2;i+;+;)for循环的解释
您好,我有一个从特定范围获取素数的代码,我正在分析它,因为它来自互联网,我只是想知道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(I=2;I2
是组合的最低可能因子(记住,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