1、输入一个100以内的数,找出100以内(包括100)比它大的数
思路:
①列举1~100的数;
②将列举的数依次和输入的数比较;
③输出符合条件的数。
num = int(input('输入一个100以内的数:'))
for i in range(1, 101, 1):
if i > num:
print(i, end=' ')
i = 1
while i <= 100:
if i > num:
print(i, end=' ')
i += 1
输出:
2、输入一个数,将这个数的所有因数输出
思路:
①列举1~n的数;
②将列举的数依次和输入的数比较;
③输出能够n其整除的数。
inp = int(input('请输入一个数:'))
for i in range(1, inp + 1, 1):
if inp % i == 0:
print(i, end=' ')
输出:
3、设计一个算法找出1000以内 所有的“完全数”。
分析:如果一个自然数恰好等于它的因子之和,这个数就称 为“完全数”。例如,6就是一个“完全数”,因为6的因 子为1、2、3,而6=1+2+3。
思路:
(1)列举出1~1000以内的数
(2)列举出每个数的所有因数
(3)找出所有因数相加等于原数的所有原数,即是1000以内的所有的完全数
for i in range(1, 1001, 1):
n = 0
for j in range(1, i, 1):
if i % j == 0:
n += j
if n == i:
print(n, end=' ')
输出:
4、有个人的支付宝支付密码忘记了,他急需在30分钟内完 成货款的支付,请用python编程帮他找回密码。他零星记得自己的支付密码信息:
①密码是6位数字,前面两位为85;
②最后两位数字相同;
③能被13和33整除。
for i in range(850000, 859999, 1):
a = i % 10 # 最后一位
b = i // 10 % 10 # 倒数第二位,//表示整除
if a == b:
if i % 13 == 0 and i % 33 == 0:
print(i, end=' ')
输出:
5、小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。
有一次,老师出的题目是:36 x 495 = ?
他却给抄成了:396 x 45 = ?
但结果却很戏剧性,他的答案竟然是对的!!
因为 36 * 495 = 396 * 45 = 17820
类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54
假设 a b c d e 代表1~9不同的5个数字(注意是各不相同的数字,且不含0)
能满足形如: ab * cde = adb * ce 这样的算式一共有多少种呢?
n = 0
for i in range(12345, 98766, 1):
# i=abcde
a = i // 10000
b = i // 1000 % 10
c = i // 100 % 10
d = i // 10 % 10
e = i % 10
if a == 0 or b == 0 or c == 0 or d == 0 or e == 0 or a == b or a == c or a == d or a == e or b == c or b == d or b == e or c == d or c == e or d == e:
continue
if (a * 10 + b) * (c * 100 + d * 10 + e) == (a * 100 + d * 10 + b) * (c * 10 + e):
n += 1
print((a * 10 + b) ,"*", (c * 100 + d * 10 + e), "=", (a * 100 + d * 10 + b) ,"*", (c * 10 + e))
print(n)
输出:
6、有一盒乒乓球,9个9个数最后余下7个,5个5个数最后余下2个,4个4个数最后余下1个,问这盒乒乓球至少有多少个?
x = 0
while True:
if x % 9 == 7 and x % 5 == 2 and x % 4 == 1:
break
x += 1
print(x)
输出:
7、输出1~n中每个数的因子有哪些,从小到大输出!
比如:n=10,那么输出结果如下。
请输入一个数字:10
1:1
2:1 2
3:1 3
4:1 2 4
5:1 5
6:1 2 3 6
7:1 7
8:1 2 4 8
9:1 3 9
10:1 2 5 10
n = input('请输入一个数字:')
n = int(n)
for i in range(1, n + 1, 1):
s = str(i) + ":"
for j in range(1, i + 1, 1):
if i % j == 0:
s += str(j) + " "
print(s)
输出:
8、我家的门牌号 我家住在一条硬胡百里这条胡同的门牌号从1开始,顺序编号。
若所有的门牌号之和减去我家门牌号的两倍正好等于 100 ,
求我家的门牌号及总共有多少家。
分析:1+2+…+m-1+m+m+1+…+x - m * 2 = 100
j = 0
count = 0
for m in range(1, 10000, 1):
sums = 0
for i in range(1, m + 1, 1):
sums += i
count = m
j = m
while sums - m * 2 < 100:
count += 1
sums += count
if sums - m * 2 == 100:
break
print(j)
print(count)
输出: