python菜鸟教程100例-Python 练习实例14

#15

小天儿

102***9045@qq.com

14

使用 Python3 的参考解法:

#!/usr/bin/python3

x = int(input("是否进入循环?是:1, 否:0 "));

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 "));

输出测试如下所示:

是否进入循环?是:1, 否:0

1

请输入一个正整数:90

90 = 2 * 3 * 3 * 5

是否进入循环?是:1, 否:0

1

请输入一个正整数:100

100 = 2 * 2 * 5 * 5

是否进入循环?是:1, 否:0

0

小天儿

小天儿

102***9045@qq.com4年前 (2017-04-19)

#14

JohnLee

372***369@qq.com

14

使用 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("请输入正确的正整数")

JohnLee

JohnLee

372***369@qq.com4年前 (2017-04-19)

#13

Chivalry

825***501@qq.com

6

参考解法:

#!/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

Chivalry

Chivalry

825***501@qq.com4年前 (2017-04-25)

#12

Eric

382***115@qq.com

2

参考方案:

#!/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]

Eric

Eric

382***115@qq.com4年前 (2017-04-25)

#11

Kunz

sun***gup@163.com

3

我的貌似更简单更好理解一些:

#!/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)

Kunz

Kunz

sun***gup@163.com4年前 (2017-05-09)

#10

Almighty

132***9971@qq.com

1

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

Almighty

Almighty

132***9971@qq.com3年前 (2017-05-29)

#9

Mark

104***7790@qq.com

0

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("请输入正确的正整数")

Mark

Mark

104***7790@qq.com3年前 (2017-06-27)

#8

CosmosHua

cos***cosmos@163.com

3

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))

CosmosHua

CosmosHua

cos***cosmos@163.com3年前 (2017-07-11)

#7

kevinjin

314***1905@zju.edu.cn

1

参考方法:#!/usr/bin/python

# -*- coding: UTF-8 -*-

num=raw_input('输入一个整数: ')

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

kevinjin

kevinjin

314***1905@zju.edu.cn3年前 (2017-07-24)

#6

小差罗

675***527@qq.com

3

Python 3.x 下测试

办法比较蠢 但是挺好理解的吧循环次数不多,定义素数函数,能被素数整除就输出

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))

小差罗

小差罗

675***527@qq.com3年前 (2017-09-12)

#5

大大大大大大大熊

382***076@qq.com

0

Python3 参考方法:

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)

大大大大大大大熊

大大大大大大大熊

382***076@qq.com3年前 (2017-09-19)

#4

wuhangxiang

yef***yun241@foxmail.com

1

参考方法:#!/usr/bin/python

# -*- coding: UTF-8 -*-

n=2

def fenjie(num):

global n

while n<=num:

if n==num:

print n

break

elif n

print '%d*'%n,

num/=n

fenjie(num)

break

elif n

n+=1

fenjie(num)

break

number=input("input a number:")

print '%d='%number,

fenjie(number)

wuhangxiang

wuhangxiang

yef***yun241@foxmail.com3年前 (2017-10-24)

#3

Echo

csz***13@163.com

1

函数处理, 兼容 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))

Echo

Echo

csz***13@163.com3年前 (2017-12-05)

#2

阳光不锈

173***979@qq.com

0

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 "))

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(' ')

k=int(input("是否进入循环?是:1, 否:0 "))

阳光不锈

阳光不锈

173***979@qq.com3年前 (2018-02-09)

#1

阳光不锈

173***979@qq.com

0

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 '))

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 '))

阳光不锈

阳光不锈

173***979@qq.com3年前 (2018-02-12)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值