1.判断101-200之间有多少个素数,并输出所有素数。
count = 0
for x in range(101, 201):
for y in range(2, int(x ** 0.5)+1):
if x % y == 0:
break
else:
print(x)
count += 1
else:
print("101-200之间素数个数:", count)
2.求整数1~100的累加值,但要求跳过所有个位为3的数。
sum_ = 0
for x in range(1, 101):
if x % 10 == 3:
sum_ += x
else:
print("1~100的累加值(跳过个位为3):", sum_)
3.有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数
m, z = 1, 2
n = int(input("求这个数列第20个分数n:"))
for x in range(2, n+1):
t = m + z
m = z
z = t
print(z, "/", m, sep="")
4.写程序计算 n 的阶乘 n! 的结果
import math
n = int(input("请输入n:"))
print("n的阶乘:", math.factorial(n))
5.求1+2!+3!+…+20!的和
import math
sum_ = 0
for x in range(1, 21):
sum_ += math.factorial(x)
print("1+2!+3!+...+20!的和:", sum_)
6.写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)
例如:a为3, n为5的时候: 3 + 33 + 333 + 3333 + 33333
a = int(input("请输入a(1~9):"))
n = int(input("请输入n:"))
sum2 = 0
for x in range(n):
sum1 = 0
for y in range(x+1):
sum1 += a * 10**y
sum2 += sum1
print("result:", sum2)
7.控制台输出三角形
a.根据n的值的不同,输出相应的形状
n = 5时 n = 4
***** ****
**** ***
*** **
** *
*
b.根据n的值的不同,输出相应的形状(n为奇数)
n = 5 n = 7
* *
*** ***
***** *****
*******
c. 根据n的值的不同,输出相应的形状
n = 4
1
121
12321
1234321
n = 5
1
121
12321
1234321
123454321
a.
n = int(input("请输入n:"))
for x in range(n, 0, -1):
for _ in range(x):
print("*", sep="", end="")
print()
b.
n = int(input("请输入n:"))
count = 1
count2 = n//2
for _ in range(n//2+1):
for _ in range(count2):
print(" ", end="", sep="")
for _ in range(count):
print("*", sep="", end="")
count += 2
count2 -= 1
print()
c.
n = int(input("请输入n:"))
count1 = n-1
count2 = 1
for _ in range(n):
for _ in range(count1):
print(" ", sep="", end="")
x = 1
for y in range(count2):
print(x, end="")
if y >= count2//2:
x -= 1
else:
x += 1
print()
count2 += 2
count1 -= 1
8.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?
for x in range(100//15+1):
for y in range(100//2+1):
for z in range(100//5+1):
if x*15 + y*2 + z*5 == 100:
print("洗发水:", x, "香皂:", y, "牙刷:", z)
9.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
h = 0.08 / 1000
count = 0
while 1:
if h < 8848.13:
h *= 2
count += 1
else:
print("对折", count, "次", sep="")
break
10.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
while 1:
n = int(input("第几个月的数量n:"))
if n == 0:
break
if n == 1 or n == 2:
print("第", n, "个数的值:", 1, sep="")
else:
n1 = 1
n2 = 1
for x in range(3, n+1):
x = n1 + n2
n1 = n2
n2 = x
else:
print("第", n, "个月的数量:", x, sep="")
11.将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = int(input("请输入一个正整数:"))
count = 0
while 1:
for x in range(2, int(num**0.5)+1):
if num % x == 0:
if count == 0:
print(num, "=", sep="", end="")
print(x, "x", sep="", end="")
break
else:
if count == 0:
print("没有!")
break
print(int(num))
break
count = 1
num /= x
12.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num = int(input("请输入一个4位整数:"))
n1 = (num // 1000 + 5) % 10
n2 = (num // 200 % 10 + 5) % 10
n3 = (num // 10 % 10 + 5) % 10
n4 = (num % 10 + 5) % 10
num = n4 * 1000 + n3 * 100 + n2 * 10 + n1
print("加密后:", num)
13.将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = int(input("请输入一个正整数:"))
count = 0
while 1:
for x in range(2, int(num**0.5)+1):
if num % x == 0:
if count == 0:
print(num, "=", sep="", end="")
print(x, "x", sep="", end="")
break
else:
if count == 0:
print("没有!")
break
print(int(num))
break
count = 1
num /= x
14.本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。
money = 1e4
for _ in range(5):
x = money*3e-3
money += x
print("5年后本金:", money)
15.输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)
num = int(input("请输入一个整数:"))
sum_ = 0
while 1:
if num != 0:
sum_ += num % 10
else:
print("各位数字和:", sum_)
break
num //= 10
16.求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)
方法1:
num1 = int(input("请输入一个数:"))
num2 = int(input("请输入另一个数:"))
z = 1
count = 0
if num1 % num2 == 0:
print("最大公约数:", num2)
print("最大公倍数:", num1)
elif num2 % num1 == 0:
print("最大公约数:", num1)
print("最大公倍数:", num2)
else:
while 1:
flag = 0
for x in range(2, int(num1**0.5)+1):
for y in range(2, int(num2**0.5)+1):
if num1 % x == 0 and num2 % y == 0:
if x == y:
z *= x
num1 /= x
num2 /= x
flag = 1
count += 1
if flag == 0 and count == 0:
print("最大公约数:", 1)
print("最小公倍数:", num1*num2)
break
elif flag == 0 and count != 0:
print("最大公约数:", z)
print("最小公倍数:", int(z*num1*num2))
break
方法2:
a=int(input("请输入一个数:"))
b=int(input("请输入另一个数:"))
if a>b:
c=a
a=b
b=c
for i in range(a,0,-1):
if(a%i==0 and b%i==0):
print("最大公约数为:",i)
break
print("最小公倍数为:",a/i*b)