【发布时间】:2018-03-24 22:49:57
【问题描述】:
我想在给定问题中找到的基本思想是这样的。我有一个名为 N 的整数变量,用户可以在其中输入一个值。
int main()
{
int n;
std::cin >> n;
然后从这一点开始,我创建了一个 for 循环,该循环复制了您通常如何确定所创建的整数是否确实是素数。但是,我要查找的不是该数字是否为素数,而是要查找从 2 到输入的数字的所有 composites。因此,如果输入为 10。我应该从给定范围内获得复合 4 6 8 9 10。 我确实知道首先要做的是创建一个这样的 for 循环
for (int i = 2; i <= 10; i++)
然后嵌套另一个带有条件的 for 循环,以测试给定范围内的每个数字是素数还是复合数。
for (int i = 2; i <= n; i++)
{
for (int j = 2; j <= i; j++)
{
if (i % j == 0)
{
std::cout << i << " ";
}
}
}
但是,这种方法并没有真正削减它。在这种嵌套的 for 循环方法中真正发生的是一个以 2 3 2 4 5 2 开头的输出和一堆没有多大意义的数字。这种方法导致输出这个古怪的数字序列的原因是什么,我能做些什么来解决这个问题?
【问题讨论】: