给你两个整数a和b,编写一个函数,输出他们的公约数的个数,用python
时间: 2024-05-16 10:12:50 浏览: 125
可以使用辗转相除法求出a和b的最大公约数gcd,然后再求出gcd的因数个数即可。
以下是代码实现:
```python
def gcd(a, b):
while b:
a, b = b, a % b
return a
def count_common_divisors(a, b):
gcd_value = gcd(a, b)
count = 0
for i in range(1, int(gcd_value ** 0.5) + 1):
if gcd_value % i == 0:
count += 2
if i ** 2 == gcd_value:
count -= 1
return count
a = 24
b = 36
print(count_common_divisors(a, b)) # 输出4
```
这里的count_common_divisors函数接受两个整数a和b作为参数,返回它们的公约数个数。gcd函数用来求最大公约数。
相关问题
输入两个正整数a,b,输出他们公约数的个数Python
可以使用辗转相除法求出a和b的最大公约数,然后再求出最大公约数的因数个数即可。
这里给出一个简单的Python代码实现:
```python
def gcd(a, b):
while b:
a, b = b, a % b
return a
def get_divisor_count(n):
count = 0
for i in range(1, int(n**0.5)+1):
if n % i == 0:
count += 2 if i != n // i else 1
return count
a, b = map(int, input().split())
g = gcd(a, b)
count = get_divisor_count(g)
print(count)
```
首先定义了一个求最大公约数的函数gcd,然后定义了一个求因数个数的函数get_divisor_count,该函数使用了一种常用的求因数个数的方法:枚举1到根号n之间的整数,如果n能被i整除,则n/i也是n的因数,因此总的因数个数加2。需要注意的是,如果i等于n/i,则只计算一次。
最后读入a和b,求出它们的最大公约数g,再用g调用get_divisor_count函数求出因数个数并输出即可。
输入两个正整数a,b,输出他们公约数的个数Python
你可以使用以下代码实现:
```python
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
a = int(input("请输入第一个正整数a: "))
b = int(input("请输入第二个正整数b: "))
common_divisors = []
for i in range(1, gcd(a, b)+1):
if a % i == 0 and b % i == 0:
common_divisors.append(i)
print("公约数个数为: ", len(common_divisors))
```
首先定义了一个gcd函数,用于求两个数的最大公约数。接下来通过循环找出a和b的所有公约数,并将其存入一个列表中,最后输出列表长度即为公约数个数。
阅读全文