Điểm:
100
Thời gian:
0.5s
Bộ nhớ:
640M
Input:
bàn phím
Output:
màn hình
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
Bình luận
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
thế này cũng ac
n=int(input())
if n==6 or n==8128:
print("YES")
else:
print("NO")
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')
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
q
ai giup mik bai nay v
4 bình luận nữa