输出结果如下:
1: 1
2: 1, 2
etc.
40: 1, 2, 4, 5, 8, 20, 40
etc.
50: 1, 2, 5, 10, 25, 50
etc.
我使用模数试图从1-100得到因子(即5%3将是2,4%3将是1,4%2将是0 - > SO 2是因素4)。我想我需要另一个循环才能让它像上面的输出一样出现。如果有人能够向我解释我做错了什么,我可以采取的步骤走上正确的道路将不胜感激。错误的是数字与输出不匹配我似乎无法按照上面的顺序打印出来。
#include <iostream>
using namespace std;
int main()
{
cout<<1<<endl;
//Flag indicator
bool isFactor;
for(int i=2; i<100; i++)
{
isFactor=true;
for(int j=3; j<i; j++)
{
if(i%j==0)
{
isFactor=false;
}
}
if(isFactor)
{
cout<<i;
}
}
cout<<endl;
}
答案 0 :(得分:1)
看来你的意思是以下
#include <iostream>
int main()
{
for ( int i = 1; i <= 100; i++ )
{
std::cout << i << ": ";
for ( int j = 1; j <= i / 2; j++ )
{
if ( i % j == 0 ) std::cout << j << ", ";
}
std::cout << i << std::endl;
}
}
程序输出看起来像
1: 1
2: 1, 2
3: 1, 3
4: 1, 2, 4
5: 1, 5
6: 1, 2, 3, 6
7: 1, 7
8: 1, 2, 4, 8
9: 1, 3, 9
10: 1, 2, 5, 10
11: 1, 11
12: 1, 2, 3, 4, 6, 12
13: 1, 13
14: 1, 2, 7, 14
15: 1, 3, 5, 15
16: 1, 2, 4, 8, 16
17: 1, 17
18: 1, 2, 3, 6, 9, 18
19: 1, 19
20: 1, 2, 4, 5, 10, 20
21: 1, 3, 7, 21
22: 1, 2, 11, 22
23: 1, 23
24: 1, 2, 3, 4, 6, 8, 12, 24
25: 1, 5, 25
26: 1, 2, 13, 26
27: 1, 3, 9, 27
28: 1, 2, 4, 7, 14, 28
29: 1, 29
30: 1, 2, 3, 5, 6, 10, 15, 30
31: 1, 31
32: 1, 2, 4, 8, 16, 32
33: 1, 3, 11, 33
34: 1, 2, 17, 34
35: 1, 5, 7, 35
36: 1, 2, 3, 4, 6, 9, 12, 18, 36
37: 1, 37
38: 1, 2, 19, 38
39: 1, 3, 13, 39
40: 1, 2, 4, 5, 8, 10, 20, 40
.....
至于你的代码那么它没有意义。:)
例如为什么这个循环
for(int i=2; i<100; i++)
//...
从2开始,不包括100?
或此代码段
if(isFactor)
{
cout<<i;
}
必须在内循环内。
这个条件
if(i%j==0)
{
isFactor=false;
}
必须至少写成
if(i%j==0)
{
isFactor=true;
}