问题分析:
因数是指整数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)