x =int(input('x = '))
y =int(input('y = '))if x > y:(x, y)=(y, x)for factor inrange(x,0,-1):print(factor)if x % factor ==0and y % factor ==0:print('%d和%d的最大公约数是%d'%(x, y, factor))print('%d和%d的最小公倍数是%d'%(x, y, x * y // factor))break
2. 用while循环实现1~100之间的偶数求和
sum=0
num =2while num <=100:sum+= num
num +=2print(sum)
3. 打印各种三角形图案
"""
*
**
***
****
*****
*
**
***
****
*****
*
***
*****
*******
*********
"""
row =int(input('请输入行数: '))for i inrange(row):for _ inrange(i +1):print('*', end='')print()for i inrange(row):for j inrange(row):if j < row - i -1:print(' ', end='')else:print('*', end='')print()for i inrange(row):for _ inrange(row - i -1):print(' ', end='')for _ inrange(2* i +1):print('*', end='')print()
4. 输入一个正整数判断它是不是素数
from math import sqrt
num =int(input('请输入一个正整数: '))
end =int(sqrt(num))
is_prime =Truefor x inrange(2, end +1):if num % x ==0:
is_prime =Falsebreakif is_prime and num !=1:print('%d是素数'% num)else:print('%d不是素数'% num)
5. 输入非负整数n计算n!
n =int(input('n = '))
result =1for x inrange(1, n +1):
result *= x
print('%d! = %d'%(n, result))
6. 输出乘法口诀表(九九表)
for i inrange(1,10):for j inrange(1, i +1):print('%d*%d=%d'%(i, j, i * j), end='\t')print()
二.简单的算法
2.1 穷举法 《百钱百鸡》
"""
求解《百钱百鸡》问题
1只公鸡5元 1只母鸡3元 3只小鸡1元 用100元买100只鸡
问公鸡 母鸡 小鸡各有多少只
"""for x inrange(0,20):for y inrange(0,33):
z =100- x - y
if5* x +3* y + z /3==100:print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只'%(x, y, z))
2.2 水仙花数
"""
找出100~999之间的所有水仙花数
水仙花数是各位立方和等于这个数本身的数
如: 153 = 1**3 + 5**3 + 3**3
"""for num inrange(100,1000):
low = num %10
mid = num //10%10
high = num //100if num == low **3+ mid **3+ high **3:print(num)
2.4 回文数
"""
判断输入的正整数是不是回文数
回文数是指将一个正整数从左往右排列和从右往左排列值一样的数
"""
num =int(input('请输入一个正整数: '))
temp = num
num2 =0while temp >0:
num2 *=10
num2 += temp %10
temp //=10if num == num2:print('%d是回文数'% num)else:print('%d不是回文数'% num)
2.4 完美数
"""
找出1~9999之间的所有完美数
完美数是除自身外其他所有因子的和正好等于这个数本身的数
例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
"""import time
import math
start = time.clock()for num inrange(1,10000):sum=0for factor inrange(1,int(math.sqrt(num))+1):if num % factor ==0:sum+= factor
if factor >1and num / factor != factor:sum+= num / factor
ifsum== num:print(num)
end = time.clock()print("执行时间:",(end - start),"秒")# 通过比较上面两种不同的解决方案的执行时间 意识到优化程序的重要性
2.5 素数
"""
输出2~99之间的素数
"""import math
for num inrange(2,100):
is_prime =Truefor factor inrange(2,int(math.sqrt(num))+1):if num % factor ==0:
is_prime =Falsebreakif is_prime:print(num, end=' ')
2.6 输出斐波那契数列
"""
输出斐波那契数列的前20个数
1 1 2 3 5 8 13 21 ...
"""
a =0
b =1for _ inrange(20):(a, b)=(b, a + b)print(a, end=' ')
2.7 Craps赌博游戏
"""
玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜
如果摇出2点 3点 12点 庄家胜 其他情况游戏继续
玩家再次要色子 如果摇出7点 庄家胜
如果摇出第一次摇的点数 玩家胜
否则游戏继续 玩家继续摇色子
玩家进入游戏时有1000元的赌注 全部输光游戏结束
"""from random import randint
money =1000while money >0:print('你的总资产为:', money)
needs_go_on =FalsewhileTrue:
debt =int(input('请下注: '))if debt >0and debt <= money:break
first = randint(1,6)+ randint(1,6)print('玩家摇出了%d点'% first)if first ==7or first ==11:print('玩家胜!')
money += debt
elif first ==2or first ==3or first ==12:print('庄家胜!')
money -= debt
else:
needs_go_on =Truewhile needs_go_on:
current = randint(1,6)+ randint(1,6)print('玩家摇出了%d点'% current)if current ==7:print('庄家胜')
money -= debt
needs_go_on =Falseelif current == first:print('玩家胜')
money += debt
needs_go_on =Falseprint('你破产了, 游戏结束!')
2.8 猜数字游戏
"""
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
"""import random
answer = random.randint(1,100)
counter =0whileTrue:
counter +=1
number =int(input('请输入: '))if number < answer:print('大一点')elif number > answer:print('小一点')else:print('恭喜你猜对了!')breakprint('你总共猜了%d次'% counter)if counter >7:print('你的智商余额明显不足')