思路
通过raw_input()函数获取参数,这个函数的默认返回值类型是string,通过int()转为int型参数;
计算出参数的因子,保存在数组中;从前面的练习已经知道数组中最后一个数最大;
反向遍历数组,判断参数是否为质数,从来得到数组中的最大质数。
break和continue
break是直接跳出for循环;
continue是跳过此次循环剩余的部分,继续进行下一次for循环中的条件判断。
for…else…的作用(else不属于for循环的内容)
for…else…的运行逻辑是当for循环正常执行结束就会运行其else语句,如果for循环中途break的话,就不会执行else中的内容。
从后往前遍历数组
for j in range(len(alist)-1,-1,-1)
range()函数语法:range(start, stop[, step])
因为数组的下标是从0开始的,所以最后一个数组的标识是len(alist)-1,len()是获取长度,因为range()函数不包括stop,从后往前遍历最后一个元素是alist[0],所以写负一。
实现脚本
# encoding: utf-8
#整数a除以整数b(b≠0)的商正好是整数而没有余数,我们就说b是a的因子。0不是0的因子。一个整数的因子至少有1和它本身。
#1的因子是其本身,0的因子是除了0以外的所有整数
def number3(a):
#定义一个数组用来保存最后的因子结果
alist = []
#abs()函数会返回数字的绝对值
b = abs(a)
for i in range(1,b+1):
if b % i == 0:
#向一个数组的最后插入一个数
alist.append(i)
#此时数组内最后一个数是最大的因子,从后往前判断这个因子是不是质数,是的话就是最大质因子。
#数组从后往前遍历
for j in range(len(alist)-1,-1,-1):
c = alist[j]
for m in range(2, c):
if c % m == 0:
break
else:
return c
#得到参数值,并且转化为int类型
a = int(raw_input("please input your number:"))
#输出函数结果,调用函数给函数传参数
print "The factor of this number is: ", number3(a)