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