#输入M和N计算C(M,N)
m = int(input('m = '))
n = int(input('n = '))
fm = 1
for num in range(1,m+1):
fm *= num
fn = 1
for num in range(1, n+1):
fn *= num
fm_n = 1
for num in range(1, m-n+1):
fm_n *= num
print(fm // fn // fm_n)
#定义函数求阶乘
def fac(num):
result = 1
for n in range(1, num+1):
result *=n
return result
m = int(input('m='))
n = int(input('n='))
print(fac(m)//fac(n)//fac(m-n))
from random import randint
#设定默认值
def roll_dice(n=2):
total = 0
for _ in range(n):
total += randint(1,6)
return total
def add(a=0,b=0,c=0):
return a+b+c
#没有指定参数就用默认值
print(roll_dice())
print(roll_dice(3))
print(add())
print(add(1))
print(add(1,2))
print(add(1,2,3))
print(add(c=50,a=100,b=200))
# 在参数名前加一个*,表示它为可变参数
def add(*args):
total = 0
for val in args:
total += val
return total
print(add())
print(add(1))
print(add(1,2))
print(add(1,2,3))
print(add(1,3,5,7,9))
#计算最大公约数和最小公倍数的函数
x = int(input('x='))
y = int(input('y='))
def zdgys(x,y):
(x,y) = (y,x) if x > y else (x,y)
for factor in range(x,0,-1):
if x % factor == 0 and y % factor == 0:
return factor
def zxgbs(x,y):
return x*y//zdgys(x,y)
print('最大公约数为%d ' % zdgys(x,y))
print('最小公倍数为%d ' % zxgbs(x,y))
#判断是否为回文数
num = int(input('num='))
def is_palindrome(num):
temp = num
total = 0
while temp > 0:
total = total * 10 + temp % 10
temp //= 10
return total == num
print(is_palindrome(num))
#判断是否为素数
num = int(input('num='))
def is_prime(num):
for factor in range(2,int(num**0.5)+1):
if num % factor == 0:
return False
return True if num!=1 else False
print(is_prime(num))