Dãy số tự nhiên a1,a2,...,an được gọi là hạnh phúc nếu nó thoả mãn các điều kiện sau:
- Dãy trên là một dãy giảm dần
- Với mọi i ( 1<=i <=n ) ai hoặc là số nguyên tố , hoặc phải là ước của một trong các số a1 , a2 , ... , ai
Ví dụ: 18 17 13 11 9 7 6 5 3 2 1 là dãy hạnh phúc
Một số được gọi là hạnh phúc nếu thay thế số đó bằng tổng bình phương các chữ số của nó, và lặp lại quá trình cho đến khi số bằng 1 (nơi mà nó sẽ ở lại), Những con số mà quá trình này kết thúc trong 1 là những con số hạnh phúc.
Ví dụ: 44 là số hạnh phúc vì 44=42+42=32=32+22=13=12+32=10=12+02=1
Yêu cầu:
- Viết chương trình nhập 1 số tự nhiên N từ bàn phím và in ra màn hình một dãy số hạnh phúc càng dài càng tốt với số hạng đầu tiên là N
- In ra các số hạnh phúc có trong dãy hạnh phúc ở trên
Dữ liệu vào: Số nguyên dương N
Dữ liệu ra: Gồm 2 dòng:
- Dòng đầu tiên là dãy hạnh phúc với số hạng đầu tiên là N
- Dòng tiếp theo là các số hạnh phúc tìm được
Ví dụ:
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
import math
c = [False] * 10001
def sieve(n):
for i in range(2, int(math.sqrt(n)) + 1):
if not c[i]:
for j in range(i, n // i + 1):
c[i * j] = True
n = int(input())
sieve(n)
for i in range(n, 0, -1):
if n % i == 0 or not c[i]:
print(i, end=' ')
Hãy giúp mọi người biết câu trả lời này thế nào?
import math
def is_prime(x):
if x <= 1:
return False
if x == 2:
return True
if x % 2 == 0:
return False
limit = int(math.sqrt(x)) + 1
for i in range(3, limit, 2):
if x % i == 0:
return False
return True
def sum_of_square_digits(x):
s = 0
while x != 0:
digit = x % 10
s += digit * digit
x //= 10
return s
def is_happy_number(n):
visited = set()
while n != 1 and n not in visited:
visited.add(n)
n = sum_of_square_digits(n)
return n == 1
n = int(input())
for i in range(n, 0, -1):
if is_prime(i) or n % i == 0:
print(i, end=" ")
print()
for i in range(n, 0, -1):
if is_happy_number(i):
print(i, end=" ")
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin