python问题回答

输出200以内的所有素数(要求每行打印5个,素数间空格隔开),并打印出素数的总个数。输出200以内的最大完数。

def find_prime_numbers(n):

    prime_list = []
    is_prime = [True] * (n + 1)
    for i in range(2, n + 1):
        if is_prime[i]:
            prime_list.append(i)
            for j in range(i * i, n + 1, i):
                is_prime[j] = False
    return prime_list
prime_list = find_prime_numbers(200)
count = len(prime_list)
print("200以内的素数有%d个:" % count)
for i in range(count):
    print(prime_list[i], end=' ')
    if (i + 1) % 5 == 0:
        print()
print()

def find_perfect_number(n):
    perfect_list = []
    for i in range(2, n + 1):
        factors = [1]  # 1一定是i的因子
        for j in range(2, int(i ** 0.5) + 1):
            if i % j == 0:
                factors.append(j)
                if j != i // j:
                    factors.append(i // j)
        if sum(factors) == i:
            perfect_list.append(i)
    return perfect_list
perfect_list = find_perfect_number(200)
if len(perfect_list) > 0:
    max_perfect = max(perfect_list)
    print("200以内的最大完数是%d" % max_perfect)
else:
    print("200以内不存在完数")

该回答引用chatgpt:

import math

# 判断一个数是否为素数
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

# 输出200以内的所有素数
count = 0
for i in range(2, 201):
    if is_prime(i):
        count += 1
        print(i, end=' ')
        if count % 5 == 0:
            print()
print('\n素数的总个数为:', count)

# 输出200以内的最大完数
for i in range(2, 201):
    divisors = [1]
    for j in range(2, int(math.sqrt(i)) + 1):
        if i % j == 0:
            divisors.append(j)
            if j != i // j:
                divisors.append(i // j)
    if sum(divisors) == i:
        print(i, '是完数')
        break


print("200以内的素数为:")
for num in range(2, 201):
    for i in range(2, num):
        if (num % i) == 0:
            break
    else:
        print(num, end="\t")
        count += 1
        if count % 5 == 0:
            print()
print("\n素数个数为:", count)


```print("200以内的完数为:")
for num in range(2, 201):
    factor_sum = 0
    for i in range(1, num):
        if (num % i) == 0:
            factor_sum += i
    if factor_sum == num:
        print(num)


```