新手·ing 发表于 2017-8-12 09:21:14

Python:每日一题 77(答题领鱼币)


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

例子:bprime(10)
>>>
bprime(30)
>>>
bprime(13)
>>>13 is prime



楼主自己的高难度写法(萌新较渣):
**** Hidden Message *****
大神的两行代码求解:
**** Hidden Message *****

shinemic 发表于 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

九九八十一 发表于 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

一行{:10_264:}

九九八十一 发表于 2017-8-12 13:39:02

九九八十一 发表于 2017-8-12 13:38
一行

智障了{:10_266:}

左手十字 发表于 2017-8-12 14:07:03

膜拜一下大神

chunchun2017 发表于 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

>>>
============== ==============
请输入要判断的数:7
7 is prime
>>>

古堡主人。 发表于 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()
                        flage=False
                j=j+1
        if flage:
                return (str(i)+' is prime')
        else:
                return mylist

冬雪雪冬 发表于 2017-8-12 15:24:28

写了一个,再看大神的果然是高!
def bprime(n):
    lst =
    return lst if lst else str(n) + ' is prime'

sdsd 发表于 2017-8-12 16:23:28

冬雪雪冬 发表于 2017-8-12 15:24
写了一个,再看大神的果然是高!

{:10_275:}你也很厉害

sdsd 发表于 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)       

龙潭小天才 发表于 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)
            

ktjack2009 发表于 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

lalalaoh 发表于 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)

kyldv 发表于 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)

l1993520 发表于 2017-8-13 00:31:07

看看大神

1141429506 发表于 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()
    if list1 == []:
      return 1
    else:
      list2 = list(set(list1))
      list3 = list2.sort()
      return list3
print(dprime(16))

运行出来是none不知道有没有大佬愿意帮忙解答以一下

1141429506 发表于 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()
    if list1 == []:
      return str(x)+' is prime'
    else:
      list2=list(set(list1))
      list2.sort()
      return list2
print(dprime(1))

1173419450 发表于 2017-8-13 20:49:48

看看

MSK 发表于 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

江南小C 发表于 2017-8-14 09:39:40

太厉害了
页: [1] 2
查看完整版本: Python:每日一题 77(答题领鱼币)