python编程练习4

今天的第一道编程题目比较简单,是将16进制的字符串转换为10进制的

import sys
for i in sys.stdin:
    print str(int(i, 16))

有人是这么写的

while True:
    try:
        x = raw_input()
        print int(x, 16)
    except:
        break

今天的第二道题目:质数因子
输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格

自己先尝试写了一下,但是没有成功,主要是在寻找因子的循环出了问题。

#import math

def factor(x):
    i = 1
    l = []
    if x.isdigit and int(x) > 0:
        x = int(x)
        while i < x:
             if x % i == 0:
                l.append(i)
             x /= i
             i += 1
    return l


if __name__ == '__main__':
    x = raw_input('Pls input the num: ')
    y = factor(x)
    z = set(sorted(y))
    for j in list(z):
        print j

如果x可以整除i,那么i就是其中一个因子,然后x整除i之后的商赋给x,x继续判断是否整除i,如果可以整除,如此循环,不可以整除,那么i+1,再进行上面的循环判断。其实是需要两个循环的,第一个循环是控制因子的,实现因子的递增,内部的循环是判断是否可以整除,一直到不可以整除才推出内部循环。
下面是一个通过的例子,就是通过两个循环实现的:

m=int(raw_input())
line=[]
i = 2
while i*i<=m:
    while m%i==0:
        m = m/i
        line.append(i)
    i = i+1
if m !=1:
    line.append(m)
for j in line:
    print j,
print ''

虽然可以通过测试,但是感觉这个代码还不是很严谨。

下面是另外一个例子,先写了一个判断质数的函数,第二个函数中,先把质数因子找出来,然后在else语句中将整数分解开来,当然也需要两层循环来实现。

def isPrime(n):
    return not [i for i in xrange(2, int(n ** 0.5) + 1) if n % i == 0]
     
def primeFactors(x):
    a = [i for i in xrange(2, int(x ** 0.5) + 1) if isPrime(i) and x % i == 0]
    if len(a) == 0:
        return str(x) + ' '
    else:
        factors = []
        for i in a:
            while x % i == 0:
                factors.append(i)
                x //= i
        if x != 1:
            factors.append(x)
        return ' '.join(map(str, factors)) + ' '
         
print primeFactors(input())

参考资料:
https://www.nowcoder.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,166评论 0 41
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,916评论 0 2
  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,733评论 3 71
  • 韩子曰师者传道受业解惑也,故古之为师也慎矣,业秉修齐之道,身立百代之功,加之于外必美其心,健其体,长其志,怡其情,...
    庸晓阅读 1,448评论 1 1
  • 我喜欢南方,但我从没有去过南方, 就像我爱北方,舍不得离开北方一样。 所有求之不得的东西,我都舍不得一下子用完, ...
    阿杰Alex阅读 605评论 2 2