python - 怎么求2个数的公因数
问题描述
打印 a 和 b 的公因数的个数。
输入 > 10, 15
输出 > 2
10、15的公因数是1和5
我的代码
def print_factors(x,y):
l = []
for i in range(1, x + 1):
if x % i == 0:
l.append(i)
m = []
for i in range(1, y + 1):
if y % i == 0:
m.append(i)
print (list(set(l).intersection(m)))
num1 = int(input("Enter a number: ")) #10
num2 = int(input("Enter a number: ")) #15
print_factors(num1,num2)
有没有更好的优化方法,比如列表理解。或使用 zip 模块
解决方案
显然 GCD 已经存在,所以其他答案可以修改为
from fractions import gcd
def cf(num1,num2):
n=[]
g=gcd(num1, num2)
for i in range(1, g+1):
if g%i==0:
n.append(i)
return n
print(cf(int(input("a:")),int(input("b:"))))
然后当然你可以使用素数测试中的“技巧”,并循环直到数字的平方根,因为除数成对出现:
from fractions import gcd
from math import sqrt
def cf(num1,num2):
n=[]
g=gcd(num1, num2)
for i in range(1, int(sqrt(g))+1):
if g%i==0:
n.append(i)
if g!=i*i:
n.append(int(g/i))
return n
print(cf(int(input("a:")),int(input("b:"))))
推荐阅读
- amazon-web-services - 如何从 AWS S3 存储桶流式传输预签名视频?
- c# - 使用 Unity 的新输入系统检测鼠标滚轮滚动输入
- java - 将 JsonObject 嵌套到字符串
- python - 使用 python 函数在 pandas 数据框中更改为 2021 时,输出数据不正确
- autodesk-forge - Forge 配置器发明者添加自定义扩展
- sql - 员工多于一项津贴的处理
- sql - MySQL Workbench 1:CN 关系
- webgl - 使用 Emscripten 的 SDL 进行 WebGL 渲染对于 sRGB 感知代码来说太暗了
- json - Clojure json 比较
- python - 将范围内python函数的输出/部分响应合并到一个表中