簡體   English   中英

讀取 integer 並打印小於給定 integer 的所有完美數

[英]Reads an integer and print all perfect number smaller than given integer

我可以找到完美數字,但我無法打印小於給定 integer 的所有完美數字。

int main() {

    cout << "Enter a number ";
    int number{};
    cin >> number;
    int sum{};

    int j{};
    for (int i = 1; i < number ; i++) {
        j = number % i;
        if (j == 0)
            sum = sum + i;
    }
    if (sum == number){
        cout << sum;

我希望 output 6 28 496 input=500

似乎您已經將“是否完美”的邏輯與“給定限制下的所有數字”邏輯混合在一起,從而無法獲得所需的結果。

我會接受你的測試並將其放入 function 中。

bool isPerfect(int number) {
    int j{}, sum{};
    for (int i=1; i<number; i++) {
        j = number % i;
        if (j == 0) sum = sum + i;
    }
    return (sum == number);
}

然后使用小於給定輸入的所有整數重復調用 function:

int main()
{
    std::cout << "Enter a number ";
    int number{};
    std::cin >> number;
    for (int n = 1; n <= number; n++) {
        if (isPerfect(n))
            std::cout << n << " ";
    }
}

輸出給定限制 30 = 6 28

當然,您仍然可以在 main() function 中完成所有操作,但是將其分解后會更清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM