内容:函数&&蓝桥模拟题
第13届蓝桥杯第二场模拟赛:
2.如果一个整数 g 能同时整除整数 A 和 B,则称 g 是 A 和 B 的公约数。
例如:43 是 86 和 2021 的公约数。请问在 1(含) 到 2021(含) 中,有多少个数与 2021 存在大于 1 的公约数。
思路:先创建一个能求俩个数的最大公因数的函数(我看了别人的答案才知道没必要是俩个都是未知数,可以单个未知数的函数就行了,不过问题不大)然后就是迭代 一下 长度是range(1,2022),i从1到2021 中的所有数与2021的最大公因数,如果大于一就记一次数,代码如下:
def yuel(x,y):
'''定义一个求最大公约数的函数,i 即能被x整除也能被y整除,range为(1,min(x,y))'''
A=[] '''准备用的是将所有公因数存列表A中,然后求的是A[-1],即列表最后一位,因为后面的迭代是按照从小到大的顺序的,所以可以这么做'''
for i in range(1,min(x,y)+1):
if x%i==0:
if y%i==0:
A.append(i)
return A[-1]
#函数创建完了,就可以根据刚刚的思路继续,最后打印出来结果是89
j=0
for i in range(1,2022):
if yuel(i