

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Giải thích các bước giải:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll TU(ll n)
{
int cnt=0;
for(ll i=1;i*i<n;i++)
{
if(!(n%i))
cnt+=i+n/i;
if(i*i==n)
cnt-=i;
}
return cnt;
}
int main()
{
ll n;
cin>>n;
if(TU(n)-n==n)
cout<<"YES";
else
cout<<"NO";
}
Hãy giúp mọi người biết câu trả lời này thế nào?

Thuật toán: Tạo 1 hàm tính tổng các ước của 1 số (Thuật toán duyệt căn, có thể tìm hiểu thêm). Sau đó trừ đi chính nó, vì chính số đó là ước lớn nhất của nó. Kiểm tra xem nó có bằng chính số đó hay không.
$\texttt{C++}$
#include <bits/stdc++.h>
using namespace std;
long long tonguoc(long long n)
{
int s = 0;
for(long long i = 1; i * i <= n; i++)
{
if(n%i==0)
{
s+=i;
if(n/i!=i) s+=n/i;
}
}
return s;
}
int main()
{
long long n;
cin>>n;
if(tonguoc(n)-n==n) cout<<"YES";
else cout<<"NO";
}
Hãy giúp mọi người biết câu trả lời này thế nào?

Bảng tin
1176
545
1084
https://hoidap247.com/cau-hoi/6101978