1、分解质因数
脑子有点笨,算出所有质因数放到列表li这一步,就足足花了我五个小时!最后还不知道怎么去掉输出时最后哪个“*”。求大神指教!
# -*- coding: utf-8 -*-
"""
将一个正整数分解质因数。例如:输入90, 打印出 90=2*3*3*5
"""
#
n = int(input("请输入需要分解质因数的合数:"))
x = n
li = []
for i in range(2, n+1):
while n % i == 0:
li.append(i)
n = n // i
print("%d = " % x, end = '')
for i in range(li.__len__()):
print(li[i], "* ", end = '')
原来字符串有个join方法,用在这里:
# -*- coding: utf-8 -*-
"""
将一个正整数分解质因数。例如:输入90, 打印出 90=2*3*3*5
"""
#
n = int(input("请输入需要分解质因数的合数:"))
x = n
li = []
for i in range(2, n+1):
while n % i == 0:
li.append(i)
n = n // i
print("%d = " % x, end = '')
#这个打印方式无法去掉末尾的“*”
#for i in range(li.__len__()):
# print(li[i], "* ", end = '')
#将列表里面的所有元素都转换成str类型,这样在print时才能使用join
#避免打印出来的等式末尾有“*”
for i in range(li.__len__()):
li[i] = str(li[i])
print(" * ".join(li), end = '')
2、题目如下
# -*- coding: utf-8 -*-
"""
题目:求 s=a + aa + aaa + aaaa + aa...a 的 值 , 其 中 a 是 一 个 数 字 。 例 如
2+22+222+2222+22222(此时,共有 5 个数相加 ) ,几个数相加由键盘控制
"""
a = int(input("请输入数字a:"))
n = int(input("请输入n的值:"))
s = 0#第n个数字
n1 = n
#这个while循环用来取出n个a组成的数字,就是a最多的一项
while n > 0:
s += a * pow(10, n - 1)
n -= 1
a1 = s
sum = 0
#一个新的while循环用来求出最终加法的结果
while n1 > 0:
sum = sum + a1 % pow(10, n1)
n1 -= 1
print("S的值为:%d" % sum)# -*- coding: utf-8 -*-
"""
求 s=a + aa + aaa + aaaa + aa...a 的 值 , 其 中 a 是 一 个 数 字 。 例 如
2+22+222+2222+22222(此时,共有 5 个数相加 ) ,几个数相加由键盘控制
"""
a = int(input("请输入数字a:"))
n = int(input("请输入n的值:"))
s = 0#第n个数字
n1 = n
#这个while循环用来取出n个a组成的数字,就是a最多的一项
while n > 0:
s += a * pow(10, n - 1)
n -= 1
a1 = s
sum = 0
#一个新的while循环用来求出最终加法的结果
while n1 > 0:
sum = sum + a1 % pow(10, n1)
n1 -= 1
print("S的值为:%d" % sum)
3、完数
# -*- coding: utf-8 -*-
"""
一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如 6=1+2+3。编
程找出 1000 以内的所有完数
"""
def fun(n):
s = 0
for i in range(1, n):
if n % i == 0:
s += i#将所有因子都相加
if s == n:#如果所有因子之和等于本身,就是完数
return True
for i in range(1, 1000):
if fun(i):
print("%d是完数" % i)
4、球的弹跳次数
# -*- coding: utf-8 -*-
"""
题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
第 n 次落地时,共经过多少米?第 n 次反弹多高?
"""
n = int(input("请输入次数n:"))
N = n
sum = 0
while n - 2 >= 0:
sum += pow(2, 2 - n)
n -= 1
s = 100 + 100 * sum
print("第 %d 次反弹时经过 %0.2f 米" % (N, s))
print("第 %d 次反弹 %0.2f 米" % (N, 100 * pow(2, -N)))