python2.7练习小例子(十三)
13):题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成。(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*- def reduceNum(n):
print '{} = '.format(n),
if not isinstance(n, int) or n <= 0 :
print '请输入一个正确的数字 !'
exit(0)
elif n in [1] :
print '{}'.format(n)
while n not in [1] : # 循环保证递归
for index in xrange(2, n + 1) :
if n % index == 0:
n /= index # n 等于 n/index
if n == 1:
print index
else : # index 一定是素数
print '{} *'.format(index),
break
reduceNum(90)
reduceNum(100)
以上实例输出结果为:
90 = 2 * 3 * 3 * 5
100 = 2 * 2 * 5 * 5
使用 Python3 的参考解法:
#!/usr/bin/python3
x = int(input("是否进入循环?是:1, 否:0\n"));
while(x):
n = int(input("请输入一个正整数:"));
print ("%d = " %n , end = '');
while n not in [1]:
for index in range(2, n+1):
if n % index == 0:
n = int(n/index);
if n == 1:
print("%d " %index , end = '');
else:
print("%d * " %index , end = '')
break;
print();
x = int(input("是否进入循环?是:1, 否:0\n"));
输出测试如下所示:
是否进入循环?是:1, 否:0
1
请输入一个正整数:90
90 = 2 * 3 * 3 * 5
是否进入循环?是:1, 否:0
1
请输入一个正整数:100
100 = 2 * 2 * 5 * 5
是否进入循环?是:1, 否:0
0
使用 Python3 的参考解法:
#!/usr/bin/python3 def prime(n):
l = []
while n > 1:
for i in range(2, n + 1):
if n % i == 0:
n = int(n / i)
l.append(i)
break
return l s = input("输入一个正整数:")
if s.isdigit() and int(s) > 0:
print(s, "=", "*".join([str(x) for x in prime(int(s))]))
else:
print("请输入正确的正整数")
#!/usr/bin/python
# -*- coding: UTF-8 -*- input = int(raw_input("请输入要分解的正整数:")) temp = []
while input!=1:
for i in range(2,input+1):
if input%i == 0:
temp.append(i)
input = input/i
break
print temp
#!/usr/bin/python
# -*- coding: UTF-8 -*- import math l=[]
def resolve(num):
do=0
if num<1:
return
elif num==1:
l.append(num)
return
for i in range(2,int(math.sqrt(num))+1):
if num%i==0:
do=1
l.append(i)
num=num/i
resolve(num)
break
if do==0:
l.append(num)
num=int(raw_input())
resolve(num)
print l
print "%d ="%num,
for k in range(len(l)):
if k!=len(l)-1:
print "%d *"%l[k],
else:
print "%d" % l[k]
#!/usr/bin/python
# -*- coding: UTF-8 -*- n=int(raw_input('Please input a number:'))
n1=n
l=[]
while n>1:
for i in range(2,n+1):
if n%i==0:
n=n/i
l.append(str(i))
break print '%d=' %n1 + '*'.join(l)
Python3 参考方法:
#!/usr/bin/env python3 from math import sqrt flag = 0
n = int(input("输入一个整数:"))
print("%d="%n,end="")
m = int(sqrt(n)) + 1
for j in range(n):
for i in range(2,m):
if n%i == 0:
if n == i:
flag = 1
print("%d"%i,end='')
else:
print("%d*"%i,end='')
n /= i
break
if flag == 1:
break
Python3.6 这种写法能够运行更大的数字:
#!/usr/bin/python3
x=input("输入一个正整数:")
if x.isdigit() and int(x)>0:
x=int(x)
t,i=1,2
print(x,end="=")
while t>=0:
if x%i==0:
print(i,end="")
x/=i
t=x-i
if x!=1:
print("*",end="")
while x%i and x!=1:
i+=1
else:
print("请输入正确的正整数")
Python3简明解法:
def factor(n):
fac = []
hf = n//2
while n>1:
for i in range(2, hf+1):
if n%i == 0:
n //= i; fac.append(i); break
return fac n = int(input("input a number: "))
print(n, "=", factor(n))
#!/usr/bin/python
# -*- coding: UTF-8 -*- num=raw_input('输入一个整数:\n')
num=int(num)
print '%d =' %num,
i=2
while i<=num:
if num%i==0:
if num==i:
print '%d' %i,
break
else:
num=num/i
print '%d *' %i,
else:
i+=1
import math def isprime(num):
flag=1
for i in range(2,int(math.sqrt(num))+1):
if num%i==0:
flag=0
break
if flag:
return True
else:
return False num=int(input('input a number:'))
print(num,'=',end='')
while(not isprime(int(num))):
for i in range(2,int(num)):
if num%i==0:
print(i,'*',end='')
num/=i
break
print(int(num))
import math
print("请输入一个正整数:")
n = int(input())
if n <= 0:
print("请输入正整数")
i=2
if n!=1:
while i!=n:
if n % i == 0:
print(i)
n = n // i
else:
i+=1
print(i)
else:
print(n)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
n=2
def fenjie(num):
global n
while n<=num:
if n==num:
print n
break
elif n<num and num%n==0:
print '%d*'%n,
num/=n
fenjie(num)
break
elif n<num and num%n!=0:
n+=1
fenjie(num)
break number=input("input a number:")
print '%d='%number,
fenjie(number)
函数处理, 兼容 python2.x 与 python3.x:
#!/usr/bin/python
# -*- coding: UTF-8 -*- num = int(input('请输入需要分解的数:')) def fenjie(num):
strf = '{}='.format(num)
flag = True
while flag:
for i in range(2,num+1):
if not num%i:
if i==num:
flag = False
strf = strf + str(i)
else:
strf = strf + str(i) + '×'
num = num//i
break
return strf
print(fenjie(num))
Python3 下测试:
#生成器函数prime,返回一个质数生成器prime(),可以生成所有质数。
def prime():
i=2
while 1:
for j in range(2,i):
if i%j==0:
i+=1
break
else:
yield i
i+=1 k=int(input("是否进入循环?是:1, 否:0\n"))
while k:
n=int(input('请输入一个大于1的正整数:'))
print(str(n)+'=',end='')
flag=1
while flag:
for i in prime():
if not n%i:
if i==n:
flag=0
print(i)
else:
print(str(i)+'*',end='')
n=n//i
break
print('\n')
k=int(input("是否进入循环?是:1, 否:0\n"))
Python3: 使用一个生成器 f(x),生成整数 x 的所有质因数。代码如下:
#isprime函数,x是素数返回1,不是返回0
def isprime(x):
for i in range(2,x):
if x%i==0:
return 0
else:
return 1 #生成器f(x),生成整数x的所有质因数
def f(x):
while not isprime(x):
for i in range(2,x):
if x%i==0:
x=x//i
yield i
break
yield x k=int(input('是否继续求解?是:1, 否:0\n'))
while k:
n=int(input('num:'))
print(str(n)+'=',end='')
s=''
for j in f(n):
s+=str(j)+'*'
print(s[:-1])
print()
k=int(input('是否继续求解?是:1, 否:0\n'))
实例到这里就结束了哦。如果感觉不错的话,请多多点赞支持哦。。。
原文链接:https://blog.csdn.net/luyaran/article/details/80049598
python2.7练习小例子(十三)的更多相关文章
- python2.7练习小例子(二十三)
23):题目:求1+2!+3!+...+20!的和. 程序分析:此程序只是把累加变成了累乘. #!/usr/bin/python # -*- coding: UTF-8 -*- n = ...
- python2.7练习小例子(二十九)
29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...
- python2.7练习小例子(十八)
19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. #!/usr/bin/python # -*- ...
- python2.7练习小例子(十二)
12):题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数" ...
- python2.7练习小例子(八)
8):题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列. 程序源代码: #!/usr/bin/python # -*- coding: ...
- python2.7练习小例子(七)
7):题目:将一个列表的数据复制到另一个列表中. 程序分析:使用列表[:]. 程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...
- python2.7练习小例子(二十七)
27):题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. #!/usr/bin/python # -*- coding: UTF-8 -* ...
- python2.7练习小例子(二十八)
28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...
- python2.7练习小例子(二十四)
24):1.题目:利用递归方法求5!. 程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact( ...
- python2.7练习小例子(十七)
17):题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制. 程序分析: ...
随机推荐
- 6.Zabbix 3.0 MySQL 监控
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=94cd760a4848939d33892b7464cc0401&sub=8B6EDD27671 ...
- Haskell 与范畴论-函子、态射、函数
范畴论基本概念 如果你是第一次听说范畴论(category theory),看到这高大上的名字估计心里就会一咯噔,到底数学威力巨大,光是高等数学就能让很多人噩梦连连.和搞编程的一样,数学家喜欢将问题不 ...
- python:类与对象命名空间、面对对象的组合用法
1,类里可以定义两种属性: #静态属性 #静态属性就是直接在类中定义的变量 #动态属性 #动态属性就是定义在类中的方法 class Course: language = ['Chinese']#静态属 ...
- ZJOI2019Day2余姚中学游记(4.23~4.26)
前言 \(Day2\),又是一场噩梦. 前段时间去做了挺多十二省联考和\(HNOI2019\)的题目,还订正掉了\(Day1\)的\(T1\)和\(T2\)(\(T3\)动态\(DP\)完全不想订正啊 ...
- 「SDOI2008沙拉公主的困惑」
题目 看着有点可怕 求 \[\sum_{i=1}^{n!}[(i,m!)=1]\] 考虑一下\(m=n\)的时候的答案 非常显然就是\(\varphi(m!)\) 而如果\(n>m\) 非常显然 ...
- 过拟合是什么?如何解决过拟合?l1、l2怎么解决过拟合
1. 过拟合是什么? https://www.zhihu.com/question/264909622 那个英文回答就是说h1.h2属于同一个集合,实际情况是h2比h1错误率低,你用h1来训练, ...
- qbxt Day3 其余题
例题1 noiopenjudge9277 给出在最底层的木头的个数,问有多少种堆放木头的方式,当然你的堆放方式不能让木头掉下来. 在堆放的时候木头必须互相挨着在一起. 设dp[i]表示多少个log(原 ...
- Mysql跨数据库(在同一IP地址中)复制表
数据库表间数据复制分类 在利用数据库开发时,常常会将一些表之间的数据互相导入.当然可以编写程序实现,但是,程序常常需要开发环境,不方便.最方便是利用sql语言直接导入.既方便而修改也简单.以下就是导入 ...
- PAT1087. All Roads Lead to Rome
PAT1087. All Roads Lead to Rome 题目大意 给定一个图的边权和点权, 求边权最小的路径; 若边权相同, 求点权最大; 若点权相同, 则求平均点权最大. 思路 先通过 Di ...
- bitmap和drawable的相互转化以及setImageResource(),setImageDrawable(),setImageBitmap()
从本地获取drawable图片:getResources().getDrawable(R.drawable.**) 获取bitmap:Bitmap b=BitmapFactory().decodeRe ...