Points:
100
Time limit:
0.5s
Memory limit:
640M
Input:
stdin
Output:
stdout
Số hoàn hảo là số mà tổng các ước của nó bằng \(2\) lần chính nó.
Ví dụ: \(6\) là số hoàn hảo vì \(6\) có tổng ước là \(1+2+3+6=12 = 2\) lần số \(6\).
Yêu cầu: Viết chương trình nhập vào số nguyên \(n\). In ra chữ YES
nếu \(n\) là số hoàn hảo, ngược lại ghi chữ NO
Input
- Một số nguyên dương \(n\)(\(n\leq 10^{12}\)).
Output
- In ra chữ
YES
nếu \(n\) là s ố hoàn hảo, ngược lại ghi chữNO
.
Example
Test 1
Input
6
Output
YES
Test 2
Input
36
Output
NO
Comments
note
1 số được gọi là số hoàn hảo khi số đó được biểu thị bằng công thức: 2^(p-1)×(2^p-1), với p là các số nguyên tố: 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607,..., khi đó các số nguyên tố được biểu thị dưới dạng 2^p-1 với p là các số nguyên tố như trên thì ta được một số nguyên tố Mersenne, ví dụ: khi p=3 ta được số nguyên tố Mersenne là 2³-1=7 và khi đó số hoàn hảo tương ứng là 2^(3-1)×(2³-1)=2^(3-1)×7=28
http://www.lqdoj.edu.vn/submission_source_file/17173790802c83ff3a32.sb3
scratch
ai scratch thì upvote nha, ko phải scratch thì tải link rồi vào scratch ấn new project rồi Load from your computer nha
This comment is hidden due to too much negative feedback. Click here to view it.
import math
n = int(input())
sqrt_n = int(math.sqrt(n))
t = 0
for i in range(2, sqrt_n + 1):
if n % i == 0:
t += i + n // i
if sqrt_n * sqrt_n == n:
t -= sqrt_n
t += 1 # Bổ sung ước 1
if t == n:
print('YES')
else:
print('NO')
code đúng nè
Mong Thầy xử lí ạ!
import math
n = int(input())
sqrt_n = int(math.sqrt(n))
t = 0
for i in range(2, sqrt_n + 1):
if n % i == 0:
t += i + n // i
if sqrt_n * sqrt_n == n:
t -= sqrt_n
t += 1 # Bổ sung ước 1
if t == n:
print('YES')
else:
print('NO')
This comment is hidden due to too much negative feedback. Click here to view it.
q
ai giup mik bai nay v
4 more comments