鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 9

[复制链接]
发表于 2018-4-11 11:03:38 | 显示全部楼层
def main(a):
    for i in range(2,a):
        if(a % i == 0):
            return i
        elif(i == (a-1)):
            return 0
End_Print =''

if __name__ == '__main__':
    Input_Num = a = int(input())
    End_Print += '%s = '%a
    while main(a):
        End_Print += '%s * '%main(a)
        a = int(a / main(a))
    End_Print += '%s'%a
    if '%d = %d'%(Input_Num,Input_Num) == End_Print:
        print('%d是素数'%Input_Num)
    else:
        print('%d不是素数'%Input_Num)
        print(End_Print)



        

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-13 14:46:42 | 显示全部楼层
本帖最后由 echoC 于 2018-4-13 17:35 编辑

num2=num1=int(input('请输入一个正整数:'))
list1 = []
for i in range(2,num2+1):
    if num2>=i:
        if num2%i ==0:
            while num2%i==0:
                num2=num2/i
                list1.append(i)
list1.sort()  # 排下序
print('%d=%d' % (num1, list1[0]), end='')
for i in range(1, len(list1)):
    print('*%d' % list1[i], end='')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-24 18:42:49 | 显示全部楼层
def prime_number(number):
    '''判断一个数是否为素数,1代表素数,0代表合数'''
    list0 = []  
    list1 = []
    for j in range(1,(number + 1)):
         if number % j == 0:
            list1.append(j)
    if len(list1) == 2:
        list0.append(number)
        return 1
    else :
        return 0
number = int(input('请输入一个数:'))
list4 = []
while prime_number(number) == 1 or number == 1:
    number = int(input('此数字是素数或者为1请重新输入:'))
while prime_number(number) == 0:
    for i in range(1,number + 1):
        if number % i == 0 and i != number and i != 1:
            list4.append(i)
            number //= i
            break
list4.append(number)
print(list4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-29 21:06:20 | 显示全部楼层
a = []
n = int(input('请输入数字:'))
def dec_factor(n):
    for i in range(2,n+1):
        if n%i == 0:
            a.append(i)
            dec_factor(n//i)
            return n
            break
        else:
            continue
            return a
dec_factor(n)
print('%s = '%n,end='')
for i in a[:-1]:
        print(i,end='*')
print(a[-1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-8 21:36:46 | 显示全部楼层
from math import sqrt
a = []
def fabor(n):
    if n == 1:
        return 1
    else:
        global a
        i = int(sqrt(n)+1)
        for k in range(2,i+1):
            if n % k == 0:
                a.append(k)
                return fabor(n//k)
    a.append(n)
    print(a)

x = int(input('请输入一个正数:'))
fabor(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 10:34:36 | 显示全部楼层
n = int(input("请输入一个整数:"))
print(n,end='=')
k = 2
while k != n:
    if n%k == 0:
        print(k,end='*')
        n /= k
    else:
        k = k+1
print(int(n))
还不会写递归
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 22:25:38 | 显示全部楼层
b = int(input("请输入一个正整数:"))
c = b
print(b,"=",sep="",end="")
for d in range(2,b):
    if c % d == 0:
        print(d,end="")
        c = int(c/d)
        break
while True:
    for e in range(2,c+1):
        if c % e ==0:
            print("*",e,sep="",end="")
            c = int(c/e)
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-18 22:38:56 | 显示全部楼层
892427369 发表于 2018-7-18 22:25
b = int(input("请输入一个正整数:"))
c = b
print(b,"=",sep="",end="")

补一个break,否则死循环了。

b = int(input("请输入一个正整数:"))
c = b
print(b,"=",sep="",end="")
for d in range(2,b):
    if c % d == 0:
        print(d,end="")
        c = int(c/d)
        break
while True:
    for e in range(2,c+1):
        if c % e ==0:
            print("*",e,sep="",end="")
            c = int(c/e)
            break
    if c == 1:
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 09:55:52 | 显示全部楼层
n = int(input('请输入一个正整数:'))
if n == 1:
   print('1既不是质数也不是合数,无法进行质因数分解!') 
i = 2
while i <= n:
    if n%i == 0:
        print(i)
        n = n//i
    else:
        i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-22 10:52:18 | 显示全部楼层
def fun_9(num):
    num1=num
    i=2
    m=[]
    while i<num:
        if num%i==0:
            m.append(str(i))
            num=num/i
            i=1
        i+=1
    m.append(str(int(num)))
    print('%u='%(num1),end='')
    print('*'.join(m))
fun_9(1024)
不可进行质因数分解的正整数会直接输出,如‘2=2’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-23 17:12:44 | 显示全部楼层
from math import sqrt
import sys
n=int(input("Please input number:"))
if n ==1:print('Please get out!!')
for k in range(2, int(sqrt(n))+1):
    while (n%k==0):
        print(k),
        n=n/k
        if n==1:sys.exit(0)   #出现n=1的情况需要去除
print(n)


嘎嘎嘎就是这么好看。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-23 19:03:18 | 显示全部楼层
# num = int(input("请输入一个大于1的正整数:"))
num = 100
if num <=1:
    print("输入错误")
else:
    print("%d=" % num,end="")
    i = 2
    while i <= num:
        if num % i == 0:
            print("%d" % i,end=" ")
            num = num / i
        else:
            i += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-31 09:54:42 | 显示全部楼层
def prime(n):
    ls = [2]
    for num in range(2,n+1):
        for d in range(2,num):
            if num%d == 0: break
            if d  == num - 1:
                ls.append(num)
    op = str(n)+" = "
    for c in range(n):
        if n == 1:
            break
        for k in ls:
            if k == n:
                op += str(k)
                n /= k
                break
            elif n%k == 0:
                n /= k
                op += str(k) + "*"
                break
    return print(op)

while True:
    n = int(input("please input the number:"))
    prime(n)
    if input("continue?") == "no": break

测试了一下大数运算时比较慢,学习大家的代码改进一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 18:51:38 | 显示全部楼层
i = 1
while i>0:
    n = int(input('请输入一个正整数:'))
    if n <= 0:
        print('这不是正整数,请重新输入:')
    elif n == 1:
        print(n,'=',n)
    else:
        print(n,'=',end = '')
        while n>1:
            for k in range(int(2),int(n+1)):
                if n%k==0:
                    print(k,end = '')
                    n/=k
                    break
                k+=1
            if n>1:
                print('*',end = '')
    i+=1
    print()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-14 11:04:03 | 显示全部楼层
num = input("请输入一个正整数:")
num1 = int(num)
i = 2
while i <num1:
    if num1%i==0:
        num1 /=i
        print(i,end="*")
    else:
        i +=1
print(int(num1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-30 22:42:25 | 显示全部楼层
n = int(input("输入n:"))
str1 =str(n)+" = "
k=2
while k < n+1:
    if n%k == 0:
        str1 = str1 +str(k)+'*'
        n = n/k
    else:
        k=k+1
str1=str1[0:-1]    
print(str1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-20 16:05:25 | 显示全部楼层
import math
n=int(input("请输入一个正整数:"))
a=[]
k=2
str1=str(n)+'='
for i in range(k,n+1):
    if n>=k:
        if n%i==0:
            a.append(i)
            n=n/i
            k+=1
            if i<n:
                str1+=str(i)+'*'
            else:
                str1+=str(i)                           
    else:
        break
print(str1)        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-25 14:25:49 | 显示全部楼层
打卡,说一下遇到的问题,不能初始化for 循环参数
i = 1

for n in range(1,10):
    i =  (i + 1) * 2

print(i)

i = 1
d = 3
for _ in range(9):
    i += d
    d *= 2
print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-25 16:31:27 | 显示全部楼层
num = 345678
k =2
while num >= k:
    if num%k ==0:
        num = num/k
        print(k)
    else:
        k+=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-15 17:14:45 | 显示全部楼层
def divide_factor(n):
        def factor(number):
                import math
                sqrt = int(math.sqrt(number))
                for i in range(2,sqrt+1):
                        if number % i ==0:return i
                return False
        temp = factor(n)
        if temp == False:
                print(n)
        else:
                print(temp)
                divide_factor(int(n/temp))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 00:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表