Viết chương trình kiểm tra một số có phải số phong phú hay không? Số phong phú là số nhỏ hơn tổng các ước của nó. C++ nha. Yêu cầu subtask là 2000000000 nha. THANKS!!

2 câu trả lời

Bài này kết quả lúc nào cũng ra true vì: n là ước của chính nó và ước là 1 nên cộng lại thì ra lớn hơn n

* Bản 1 theo đúng đề:

#include<iostream>
using namespace std;
int main() {
    int n,sum=0;
    cin>>n;
    for (int i=1;i<=n;i++) {
        if (n%i==0) {
            sum+=i;
        }
    }
    if (sum>n) {
        cout<<"true";
    } else {
        cout<<"false";
    }
}

* Bản 2 tính tổng các ước của nó (trừ chính nó):

#include<iostream>
using namespace std;
int main() {
    int n,sum=0;
    cin>>n;
    for (int i=1;i<=n/2;i++) {
        if (n%i==0) {
            sum+=i;
        }
    }
    if (sum>n) {
        cout<<"true";
    } else {
        cout<<"false";
    }
}

#include <iostream>
using namespace std;
int main()
{
 int n;
 cin >> n;
 int s(1);
 for (int i=2;i<=n/2;i++)
     if (n % i==0)
         s+=i;
 if (s>n)
     cout << "true";
 else cout << "false";
 return 0;
}

Câu hỏi trong lớp Xem thêm