在1-500之间找到强大的数字?

时间:2015-12-13 15:23:01

标签: visual-c++

我被困在这里。这个程序在给出1和2个强数字后停止,之后没有做任何事情output

#include <iostream>
using namespace std;

void main()
{
    int fac=1,rem=0,strong_num=0,store=0,loop=1;

    cout<<"The strong numbers in the range 1 - 500 are give below\n";
    while(1<=loop<=500)
    {

        store=loop;
        while(loop>0)
        {
            rem=loop%10;
            while(rem>0)
            {
                fac=fac*rem;
                rem--;
            }
            strong_num=strong_num+fac;
            loop=loop/10;
        }
        loop=store;
        if(strong_num==loop)
        {
            cout<<loop<<endl;
        }
        strong_num=0;
        loop++;
        fac=1;
    }
}

我知道我犯了一个大错但不知道如何解决它? 请帮帮我?

1 个答案:

答案 0 :(得分:0)

更改您的第一个while循环。

while(1<=loop<=500)

while(1<=loop && loop<=500)

更改第二个while循环。

while(loop>0)
{
    fac=1;  // Add this line here and remove from the end.
    rem=loop%10;
    while(rem>0)
    {
        fac=fac*rem;
        rem--;
    }
    strong_num=strong_num+fac;
    loop=loop/10;
}

因为我们需要分别找到每个数字的阶乘。例如,对于数字145,我们需要找到因子1,4和5.首先得到5的阶乘后,你需要将fac变量重置为1.你没有做的事情并且遇到问题。

更改后我得到了这个输出。

1
2
145