8–4. 素数.我们在本章已经给出了一些代码来确定一个数字的最大约数或者它是否是一个
素数. 请把相关代码转换为一个返回值为布尔值的函数,函数名为isprime() . 如果输入的是一个
素数, 那么返回 True , 否则返回 False .
def isprime(num):
prime=num/2
while prime>1:
ifnum%prime==0:
return False
break
prime=prime-1
else:
returnTrue
if __name__=='__main__':
while True:
num=raw_input('please input number(q to quit):')
ifnum[0].lower()=='q':
break
else:
a=isprime(int(num))
print a
8–5. 约数. 完成一个名为 getfactors() 的函数.它接受一个整数作为参数, 返回它所有
约数的列表, 包括 1 和它本身,
def getfactors(num):
a=[x for x in range(1,(num/2+1)) ifnum%x==0]
a.append(num)
return a
num=int(raw_input('pleaseinput:'))
a=getfactors(num)
print a
8–6. 素因子分解. 以刚才练习中的 isprime() 和getfactors() 函数为基础编写一个函
数, 它接受一个整数作为参数, 返回该整数所有素数因子的列表.这个过程叫做求素因子分解, 它
输出的所有因子之积应该是原来的数字. 注意列表里可能有重复的元素.例如输入 20 , 返回结果
应该是 [2, 2, 5] .
CODE:这个code有问题,待修改
def getfactors(num):
a=[x for x in range(1,(num/2+1)) ifnum%x==0]
return a
def isprime(num):
prime=num/2
while prime>1:
ifnum%prime==0:
g=getfactors(num)
return g
break
prime=prime-1
else:
return[1,num]
if __name__=='__main__':
while True:
num=raw_input('please input:')
ifnum[0].lower()=='q':
break
else:
a=isprime(int(num))
print a
8–8. 阶乘. 一个数的阶乘被定义为从 1 到该数字所有数字的乘积.N 的阶乘简写为 N! .
写一个函数, 指定N, 返回 N! 的值.
code:
def factorial(N):
a=1
for i in range(1,N+1):
a=a*i
return a
if __name__=='__main__':
while True:
n=raw_input('please input numbers(q to quit):')
ifn[0].lower()=='q':
break
B=factorial(int(n))
printB
8–10. 文本处理. 统计一句话中的元音,辅音以及单词(以空格分割)的个数. 忽略元音和
辅音的特殊情况, 如 "h", "y", "qu" 等. 附加题:编写处理这些特殊情况的代码.