鱼C论坛

 找回密码
 立即注册
查看: 6426|回复: 35

[技术交流] Python:每日一题 77(答题领鱼币)

[复制链接]
发表于 2017-8-12 09:21:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

今日题目:编写一个函数bprime。判断一个数字是否是质数,如果是质数,则返回
  1. '(那个质数数字放在这里) is prime'
复制代码
,如果不是就返回一个列表,列表总的内容是这个数的所有因数。

例子:
  1. bprime(10)
  2. >>>[2, 5]
  3. bprime(30)
  4. >>>[2, 3, 5, 6, 10, 15]
  5. bprime(13)
  6. >>>13 is prime
复制代码





楼主自己的高难度写法(萌新较渣):
游客,如果您要查看本帖隐藏内容请回复

大神的两行代码求解:
游客,如果您要查看本帖隐藏内容请回复

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-8-12 09:42:26 | 显示全部楼层
  1. def bprime(num):
  2.     factor_list = []
  3.     for x in range(2, int(num / 2) + 1):
  4.         if num % x == 0:
  5.             factor_list.append(x)
  6.     return factor_list if factor_list else '%d is prime' %num
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-12 13:38:24 | 显示全部楼层
  1. def bprime(num):
  2.      return '%d is prime' % num if all(tuple(num%i for i in range(2,int(num/2)+1))) else [i for i in range(2, int(num/2)+1) if (num%i==0)]
复制代码


一行

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4 可能是三行啊

查看全部评分

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

使用道具 举报

发表于 2017-8-12 13:39:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-12 14:07:03 From FishC Mobile | 显示全部楼层
膜拜一下大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-12 14:26:32 | 显示全部楼层
本帖最后由 chunchun2017 于 2017-8-12 14:27 编辑
  1. def bprime(n):
  2.     list0=[]
  3.     for i in range(2,n):
  4.         if(n%i==0):
  5.             list0.append(i)
  6.     if(len(list0)==0):
  7.         print(n,"is prime")
  8.     else:
  9.         print(list0)
  10. number = int(input("请输入要判断的数:"))
  11. bprime(number)
复制代码

运行结果:
===============================
请输入要判断的数:6
[2, 3]
>>>
============== ==============
请输入要判断的数:7
7 is prime
>>>

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-12 15:10:43 | 显示全部楼层
  1. def bprime(i):
  2.         mylist=[];
  3.         flage=True
  4.         j=2
  5.         while(True):
  6.                 if j==i:
  7.                         break
  8.                 if i%j==0:
  9.                         mylist.extend([j])
  10.                         flage=False
  11.                 j=j+1
  12.         if flage:
  13.                 return (str(i)+' is prime')
  14.         else:
  15.                 return mylist
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-12 15:24:28 | 显示全部楼层
写了一个,再看大神的果然是高!
  1. def bprime(n):
  2.     lst = [i for i in range(2, n) if n % i == 0]
  3.     return lst if lst else str(n) + ' is prime'
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
MSK + 5 + 5 支持楼主!

查看全部评分

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

使用道具 举报

发表于 2017-8-12 16:23:28 | 显示全部楼层
冬雪雪冬 发表于 2017-8-12 15:24
写了一个,再看大神的果然是高!

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

使用道具 举报

发表于 2017-8-12 16:24:16 | 显示全部楼层
  1. def bprime(n):
  2.         i=2
  3.         flag=True
  4.         lis=[]
  5.        
  6.         while i<n:
  7.                 if n%i==0:
  8.                         lis.append(i)
  9.                         flag=False
  10.                 i=i+1
  11.         return lis if flag==False else ('%d is prime'%n)       
复制代码

评分

参与人数 1荣誉 +4 鱼币 +6 收起 理由
新手·ing + 4 + 6

查看全部评分

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

使用道具 举报

发表于 2017-8-12 16:38:33 | 显示全部楼层
l=[]
def bprime(n):
    for i in range(2,n):
        if(n%i==0):
            l.append(i)
    if(len(l)==0):
        print("{}is prime".format(n))
    else:
         print(l)
num=int(input("输入一个整数:"))
bprime(num)
            

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-12 16:45:26 | 显示全部楼层
  1. def bprime(n):
  2.         list1 =[]
  3.         for i in range(2,n//2+1):
  4.                 if n%i == 0:
  5.                         list1.append(i)
  6.         return list1 if len(list1) else '%d is prime' % n
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-12 17:06:39 | 显示全部楼层
本帖最后由 lalalaoh 于 2017-8-12 17:09 编辑
  1. import math as m
  2. def bprime(num):
  3.     List=[]
  4.     if num == 2 or num == 3:
  5.         return("%d is prime" % num)
  6.     else:
  7.         Num=num
  8.         for each in range(2,int(m.sqrt(num)+1)):
  9.             while Num%each==0:
  10.                 List.append(each)
  11.                 Num = Num/each
  12.             if Num ==1:
  13.                 break
  14.         if not List:
  15.             return("%d is prime" % num)
  16.         else:
  17.             if Num !=1:
  18.                 List.append(int(Num))
  19.             return(List)
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-12 21:02:35 | 显示全部楼层
#判断一个数是否是素数
def bprime(x):
    c=[];
    for i in range(2,x//2):
        if x%i==0:
            c.append(i)
    if c.__len__()==0:
        print("%s is prime"%x)
    else:
        print(c)
bprime(190)

评分

参与人数 1荣誉 +4 鱼币 +2 收起 理由
新手·ing + 4 + 2

查看全部评分

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

使用道具 举报

发表于 2017-8-13 00:31:07 | 显示全部楼层
看看大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 13:39:14 | 显示全部楼层
def dprime(x):
    list1=[]
    for a in range(2,x):
        for b in range(2,x):
            if x==a*b:
                list1.extend([a,b])
    if list1 == []:
        return 1
    else:
        list2 = list(set(list1))
        list3 = list2.sort()
        return list3
print(dprime(16))

运行出来是none不知道有没有大佬愿意帮忙解答以一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-13 14:08:40 | 显示全部楼层
def dprime(x):
    list1=[]
    for a in range(2,x):
        for b in range(2,x):
            if x == a*b:
                list1.extend([a,b])
    if list1 == []:
        return str(x)+' is prime'
    else:
        list2=list(set(list1))
        list2.sort()
        return list2
print(dprime(1))

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-13 20:49:48 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-14 08:48:53 | 显示全部楼层
  1. def test(n):
  2.     result = []
  3.     i = 2
  4.     while n != 1:
  5.         if not(n%i):
  6.             result.append(i)
  7.             n /= i
  8.             continue
  9.         i += 1
  10.     return result if len(result) > 1 else '%d is a prime' % i
复制代码


评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
新手·ing + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2017-8-14 09:39:40 | 显示全部楼层
太厉害了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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