鱼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, 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 | 显示全部楼层
  1. a = []
  2. n = int(input('请输入数字:'))
  3. def dec_factor(n):
  4.     for i in range(2,n+1):
  5.         if n%i == 0:
  6.             a.append(i)
  7.             dec_factor(n//i)
  8.             return n
  9.             break
  10.         else:
  11.             continue
  12.             return a
  13. dec_factor(n)
  14. print('%s = '%n,end='')
  15. for i in a[:-1]:
  16.         print(i,end='*')
  17. print(a[-1])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

  15. x = int(input('请输入一个正数:'))
  16. 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 | 显示全部楼层
  1. n = int(input('请输入一个正整数:'))
  2. if n == 1:
  3.    print('1既不是质数也不是合数,无法进行质因数分解!')
  4. i = 2
  5. while i <= n:
  6.     if n%i == 0:
  7.         print(i)
  8.         n = n//i
  9.     else:
  10.         i += 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-22 10:52:18 | 显示全部楼层
  1. def fun_9(num):
  2.     num1=num
  3.     i=2
  4.     m=[]
  5.     while i<num:
  6.         if num%i==0:
  7.             m.append(str(i))
  8.             num=num/i
  9.             i=1
  10.         i+=1
  11.     m.append(str(int(num)))
  12.     print('%u='%(num1),end='')
  13.     print('*'.join(m))
  14. fun_9(1024)
复制代码

不可进行质因数分解的正整数会直接输出,如‘2=2’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

使用道具 举报

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

使用道具 举报

发表于 2018-8-31 09:54:42 | 显示全部楼层
  1. def prime(n):
  2.     ls = [2]
  3.     for num in range(2,n+1):
  4.         for d in range(2,num):
  5.             if num%d == 0: break
  6.             if d  == num - 1:
  7.                 ls.append(num)
  8.     op = str(n)+" = "
  9.     for c in range(n):
  10.         if n == 1:
  11.             break
  12.         for k in ls:
  13.             if k == n:
  14.                 op += str(k)
  15.                 n /= k
  16.                 break
  17.             elif n%k == 0:
  18.                 n /= k
  19.                 op += str(k) + "*"
  20.                 break
  21.     return print(op)

  22. while True:
  23.     n = int(input("please input the number:"))
  24.     prime(n)
  25.     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 | 显示全部楼层
  1. n = int(input("输入n:"))
  2. str1 =str(n)+" = "
  3. k=2
  4. while k < n+1:
  5.     if n%k == 0:
  6.         str1 = str1 +str(k)+'*'
  7.         n = n/k
  8.     else:
  9.         k=k+1
  10. str1=str1[0:-1]   
  11. 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 循环参数
  1. i = 1

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

  4. print(i)

  5. i = 1
  6. d = 3
  7. for _ in range(9):
  8.     i += d
  9.     d *= 2
  10. 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, 2024-3-29 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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