python课后习题

img


知道一点,但知道的不多,有没有哪位python厉害的告诉我正确答案的,非常感谢!

问题分析:
因数是指整数a除以整数b(b≠0) 的商正好是整数而没有余数,我们就说b是a的因数。
从因数的定义上来看,因数的主要求法,就是除法,看结果是否为整数。

(1)计算并显示正整数 n 的所有因子(1和n本身除外),其中 n 的值键盘输入。


list1 = []
n = int(input("请输入数字: "))
for i in range(2, n):
    if n % i == 0:
        list1.append(i)
        continue
    else:
        continue

print(list1)

(2)其他解法:计算并显示正整数 n 的所有因数,其中 n 的值键盘输入。

n = eval(input('请输入正整数n='))
list1=[]
print('%d的因子为:'%n)
for i in range(1,n+1):
    if(n%i==0):
        list1.append(i)
print(list1)
#[1, 2, 3, 4, 6, 12]

(3)其他解法:计算并显示正整数 n 的所有因数。

def factors(x):
    return [i for i in range(1,x+1) if x%i==0]

print(factors(12))
# [1, 2, 3, 4, 6, 12]

(4)其他解法:计算并显示正整数 n 的所有因数。

import math

def factors(n):
    results = set()
    for i in range(1, int(math.sqrt(n)) + 1):
        if n % i == 0:
            results.add(i)
            results.add(int(n/i))
    return results

print(factors(12))
# {1, 2, 3, 4, 6, 12}

(5)其他解法:计算并显示正整数 n 的所有因数。

def factors(n):
    factors = []
    for i in range(1, n//2+1):
        if n % i == 0:
            factors.append(i)
    factors.append(n)
    return factors
    
print(factors(12))
#[1, 2, 3, 4, 6, 12]

(6)其他解法:计算并显示正整数 n 的所有因数。

import numpy as np
def factors(n):
    r = np.arange(1, int(n ** 0.5) + 1)
    x = r[np.mod(n, r) == 0]
    return set(np.concatenate((x, n / x), axis=None))   

print(factors(12))
#{1.0, 2.0, 3.0, 4.0, 6.0, 12.0}
factor = lambda x:[(ele,x/ele) for ele in range(1,x//2+1) if x%ele==0 ]
print(factors(12))
#{1.0, 2.0, 3.0, 4.0, 6.0, 12.0}

其实我感觉你们这道题出的有问题,一个数的因数包括1和本身
实例中12的因数有 [1,2,3,4,6,12],实例中明显没有包括1和本身

如果按你的题意来说代码可以这样写


n = int(input("请输入数字"))
list1 = []
for i in range(2,n):
    if n%i == 0:
        list1.append(i)
        pass   
    else:
        pass
print(list1)

后面两个pass只是用来占位,没实际的意义,其实可以写的更简略

n = int(input("请输入数字"))
list1 = []
for i in range(2,n):
    if n%i == 0:
        list1.append(i)
print(list1)

希望你能得到帮助

list1 = []
n = int(input("请输入数字: "))
for i in range(2, n):
    if n % i == 0:
        list1.append(i)
print(list1)