使用嵌套for循环列出从1到100的所有数字的因子

时间:2016-02-03 13:59:53

标签: nested-loops

输出结果如下:

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;

 }    

1 个答案:

答案 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;             
    }