Python 练习实例14 | 菜鸟教程

文章推薦指數: 80 %
投票人數:10人

Python 练习实例14 Python 100例题目:将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k, ... 菜鸟教程--学的不仅是技术,更是梦想! 首页 HTML CSS JavaScript Vue Bootstrap NodeJS Python3 Python2 Java C C++ C# Go SQL Linux jQuery 本地书签 首页 HTML CSS JS 本地书签 Search Python3教程 Python2教程 Vue3教程 vue2教程 Bootstrap3教程 Bootstrap4教程 Bootstrap5教程 Bootstrap2教程 Python基础教程 Python基础教程 Python简介 Python环境搭建 Python中文编码 Python基础语法 Python变量类型 Python运算符 Python条件语句 Python循环语句 PythonWhile循环语句 Pythonfor循环语句 Python循环嵌套 Pythonbreak语句 Pythoncontinue语句 Pythonpass语句 PythonNumber(数字) Python字符串 Python列表(List) Python元组 Python字典(Dictionary) Python日期和时间 Python函数 Python模块 Python文件I/O PythonFile方法 Python异常处理 PythonOS文件/目录方法 Python内置函数 Python高级教程 Python面向对象 Python正则表达式 PythonCGI编程 PythonMySQL Python网络编程 PythonSMTP Python多线程 PythonXML解析 PythonGUI编程(Tkinter) Python2.x与3​​.x版本区别 PythonIDE PythonJSON Python100例 Python测验 Python练习实例13 Python练习实例15 Python练习实例14 Python100例 题目:将一个正整数分解质因数。

例如:输入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的值,重复执行第一步。

程序源代码: 实例(Python2.0+) #!/usr/bin/python #-*-coding:UTF-8-*- defreduceNum(n): print'{}='.format(n), ifnotisinstance(n,int)orn<=0: print'请输入一个正确的数字!' exit(0) elifnin[1]: print'{}'.format(n) whilennotin[1]:#循环保证递归 forindexinxrange(2,n+1): ifn%index==0: n/=index#n等于n/index ifn==1: printindex else:#index一定是素数 print'{}*'.format(index), break reduceNum(90) reduceNum(100) 实例(Python3.0+) #!/usr/bin/python3 defreduceNum(n): print('{}='.format(n),end="") ifnotisinstance(n,int)orn<=0: print('请输入一个正确的数字!') exit(0) elifnin[1]: print('{}'.format(n)) whilennotin[1]:#循环保证递归 forindexinrange(2,n+1): ifn%index==0: n//=index#n等于n//index ifn==1: print(index) else:#index一定是素数 print('{}*'.format(index),end="") break reduceNum(90) reduceNum(100) 以上实例输出结果为: 90=2*3*3*5 100=2*2*5*5 Python100例 Python练习实例13 Python练习实例15 15篇笔记 写笔记 #0   小天儿  102***[email protected]使用Python3的参考解法: #!/usr/bin/python3 x=int(input("是否进入循环?是:1,否:0\n")); while(x): n=int(input("请输入一个正整数:")); print("%d="%n,end=''); whilennotin[1]: forindexinrange(2,n+1): ifn%index==0: n=int(n/index); ifn==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小天儿   小天儿  102***[email protected]年前(2017-04-19) #0   JohnLee  372***[email protected]使用Python3的参考解法: #!/usr/bin/python3 defprime(n): l=[] whilen>1: foriinrange(2,n+1): ifn%i==0: n=int(n/i) l.append(i) break returnl s=input("输入一个正整数:") ifs.isdigit()andint(s)>0: print(s,"=","*".join([str(x)forxinprime(int(s))])) else: print("请输入正确的正整数") JohnLee   JohnLee  372***[email protected]年前(2017-04-19) #0   Chivalry  825***[email protected]参考解法: #!/usr/bin/python #-*-coding:UTF-8-*- input=int(raw_input("请输入要分解的正整数:")) temp=[] whileinput!=1:     foriinrange(2,input+1):         ifinput%i==0:             temp.append(i)             input=input/i             break printtemp Chivalry   Chivalry  825***[email protected]年前(2017-04-25) #0   Eric  382***[email protected]参考方案: #!/usr/bin/python #-*-coding:UTF-8-*- importmath l=[] defresolve(num):     do=0     ifnum<1:         return     elifnum==1:         l.append(num)         return     foriinrange(2,int(math.sqrt(num))+1):         ifnum%i==0:             do=1             l.append(i)             num=num/i             resolve(num)             break     ifdo==0:         l.append(num) num=int(raw_input()) resolve(num) printl print"%d="%num, forkinrange(len(l)):     ifk!=len(l)-1:         print"%d*"%l[k],     else:         print"%d"%l[k] Eric   Eric  382***[email protected]年前(2017-04-25) #0   Kunz  sun***[email protected]我的貌似更简单更好理解一些: #!/usr/bin/python #-*-coding:UTF-8-*- n=int(raw_input('Pleaseinputanumber:')) n1=n l=[] whilen>1: foriinrange(2,n+1): ifn%i==0: n=n/i l.append(str(i)) break print'%d='%n1+'*'.join(l) Kunz   Kunz  sun***[email protected]年前(2017-05-09) #0   Almighty  132***[email protected]参考方法: #!/usr/bin/envpython3 frommathimportsqrt flag=0 n=int(input("输入一个整数:")) print("%d="%n,end="") m=int(sqrt(n))+1 forjinrange(n): foriinrange(2,m): ifn%i==0: ifn==i: flag=1 print("%d"%i,end='') else: print("%d*"%i,end='') n/=i break ifflag==1: break Almighty   Almighty  132***[email protected]年前(2017-05-29) #0   Mark  104***[email protected]这种写法能够运行更大的数字 #!/usr/bin/python3 x=input("输入一个正整数:") ifx.isdigit()andint(x)>0: x=int(x) t,i=1,2 print(x,end="=") whilet>=0: ifx%i==0: print(i,end="") x/=i t=x-i ifx!=1: print("*",end="") whilex%iandx!=1: i+=1 else: print("请输入正确的正整数")Mark   Mark  104***[email protected]年前(2017-06-27) #0   CosmosHua  cos***[email protected]简明解法: deffactor(n): fac=[] hf=n//2 whilen>1: foriinrange(2,hf+1): ifn%i==0: n//=i;fac.append(i);break returnfac n=int(input("inputanumber:")) print(n,"=",factor(n))CosmosHua   CosmosHua  cos***[email protected]年前(2017-07-11) #0   kevinjin  314***[email protected]参考方法: #!/usr/bin/python #-*-coding:UTF-8-*- num=raw_input('输入一个整数:\n') num=int(num) print'%d='%num, i=2 whilei<=num: ifnum%i==0: ifnum==i: print'%d'%i, break else: num=num/i print'%d*'%i, else: i+=1 kevinjin   kevinjin  314***[email protected]年前(2017-07-24) #0   小差罗  675***[email protected]下测试办法比较蠢但是挺好理解的吧循环次数不多,定义素数函数,能被素数整除就输出 importmath defisprime(num): flag=1 foriinrange(2,int(math.sqrt(num))+1): ifnum%i==0: flag=0 break ifflag: returnTrue else: returnFalse num=int(input('inputanumber:')) print(num,'=',end='') while(notisprime(int(num))): foriinrange(2,int(num)): ifnum%i==0: print(i,'*',end='') num/=i break print(int(num)) 小差罗   小差罗  675***[email protected]年前(2017-09-12) #0   大大大大大大大熊  382***[email protected]参考方法: importmath print("请输入一个正整数:") n=int(input()) ifn<=0: print("请输入正整数") i=2 ifn!=1: whilei!=n: ifn%i==0: print(i) n=n//i else: i+=1 print(i) else: print(n)大大大大大大大熊   大大大大大大大熊  382***[email protected]年前(2017-09-19) #0   wuhangxiang  yef***[email protected]参考方法:#!/usr/bin/python #-*-coding:UTF-8-*- n=2 deffenjie(num): globaln whilen<=num: ifn==num: printn break elifn



請為這篇文章評分?