鱼C论坛

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

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

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

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

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

x

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

例子:
bprime(10)
>>>[2, 5]
bprime(30)
>>>[2, 3, 5, 6, 10, 15]
bprime(13)
>>>13 is prime




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

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

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-8-12 09:42:26 | 显示全部楼层
def bprime(num):
    factor_list = []
    for x in range(2, int(num / 2) + 1):
        if num % x == 0:
            factor_list.append(x)
    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 | 显示全部楼层
def bprime(num):
     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 编辑
def bprime(n):
    list0=[]
    for i in range(2,n):
        if(n%i==0):
            list0.append(i)
    if(len(list0)==0):
        print(n,"is prime")
    else:
        print(list0)
number = int(input("请输入要判断的数:"))
bprime(number)
运行结果:
===============================
请输入要判断的数:6
[2, 3]
>>>
============== ==============
请输入要判断的数:7
7 is prime
>>>

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-8-12 15:10:43 | 显示全部楼层
def bprime(i):
        mylist=[];
        flage=True
        j=2
        while(True):
                if j==i:
                        break
                if i%j==0:
                        mylist.extend([j])
                        flage=False
                j=j+1
        if flage:
                return (str(i)+' is prime')
        else:
                return mylist

评分

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

查看全部评分

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

使用道具 举报

发表于 2017-8-12 15:24:28 | 显示全部楼层
写了一个,再看大神的果然是高!
def bprime(n):
    lst = [i for i in range(2, n) if n % i == 0]
    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 | 显示全部楼层
def bprime(n):
        i=2
        flag=True
        lis=[]
        
        while i<n:
                if n%i==0:
                        lis.append(i)
                        flag=False
                i=i+1
        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 | 显示全部楼层
def bprime(n):
        list1 =[]
        for i in range(2,n//2+1):
                if n%i == 0:
                        list1.append(i)
        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 编辑
import math as m
def bprime(num):
    List=[]
    if num == 2 or num == 3:
        return("%d is prime" % num)
    else:
        Num=num
        for each in range(2,int(m.sqrt(num)+1)):
            while Num%each==0:
                List.append(each)
                Num = Num/each
            if Num ==1:
                break
        if not List:
            return("%d is prime" % num)
        else:
            if Num !=1:
                List.append(int(Num))
            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 | 显示全部楼层
def test(n):
    result = []
    i = 2
    while n != 1:
        if not(n%i):
            result.append(i)
            n /= i
            continue
        i += 1
    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-11-23 02:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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