c - 我想知道 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;
}
解决方案
2
是复合的最小可能因子(1 是素数的因子,请记住)。
Number/2
是最小因子的上限。我说一个上限,因为更好的界限是sqrt(Number)
. 推理:任何p
大于√N
的因子都必须有一个对应的因子q
=N/p
必须小于√N
。
推荐阅读
- javascript - 使用 Mongodb 反应原生聊天
- python - python:如何实时从调用函数中获取结果?
- java - 降低快速排序方法的复杂性
- java - Why unicode character \u0004 is not showing in Javafx TextArea
- python - 我可以在某些条件下使用opencv图像侵蚀来侵蚀RGB吗?
- android - Presentation model in clean architecture
- python - how to solve sequence item 0: expected str instance, tuple found
- python - Convention to distinguish type aliases from actual classes?
- java - 如何将图像放置在另一个图像上的确切位置?
- uwp - 为 UWP 应用程序获取离线 HTTPesponse