鱼C论坛

 找回密码
 立即注册
查看: 4320|回复: 57

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

[复制链接]
发表于 2018-7-24 15:23:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 冬雪雪冬 于 2018-7-28 20:30 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
23是质数,它的十位和个位2和3也是质数,求出100以内所有这样的两位数质数。
注:最近几期的题目可能有点难度,参与的鱼油不够踊跃,这回来个难度低的题,希望更多的人参加。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
大头目 + 1 + 1 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2018-7-24 16:21:23 | 显示全部楼层
  1. list1 = [x for x in range(10,100)]
  2. list0 = []
  3. for each in range(10,100):
  4.     for i in range(1,each//2+1):
  5.         for j in range(1,i+1):
  6.             if i * j == each:
  7.                 if each in list0:
  8.                     pass
  9.                 else:
  10.                     list0.append(each)
  11. list2 = [2,3,5,7]
  12. for each in list0:
  13.     list1.remove(each)
  14. for each in list1:
  15.     if (each//10 in list2) and (each%10 in list2):
  16.         print(each,end=',')
复制代码



23,37,53,73,

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-7-24 16:53:03 | 显示全部楼层
本帖最后由 graceasyi 于 2018-7-24 17:06 编辑
  1. def is_prime(n):
  2.     if n not in [0, 1]:
  3.         for i in range(2, n):
  4.             if n % i == 0:
  5.                 return False
  6.         else:
  7.             return True
  8.     else:
  9.         return False


  10. for n in range(11, 100):
  11.     if is_prime(n):
  12.         if is_prime(n % 10) and is_prime(n // 10):
  13.             print(n)
复制代码


另一种思路:由于要求每一位都是质数,因此先找出10以内的质数,2,3,5,7,再组合后判断符合条件的,这样一共只需要判断25次质数就可以了。
  1. p = [x for x in range(2, 10) if is_prime(x)]
  2. result = [i * 10 + j for i in p for j in p if is_prime(i * 10 + j)]
  3. print(result)
复制代码


结果:
23
37
53
73

点评

2位数的个位不能是2和5,又可以去除一些。  发表于 2018-7-28 20:32

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2018-7-24 16:56:28 | 显示全部楼层
  1. def isPrime(num):
  2.     if num == 2:
  3.         return True
  4.     elif num == 0 or num == 1:
  5.         return False
  6.     else:
  7.         for i in range(2, int(num ** 0.5) + 1):
  8.             if num % i == 0:
  9.                 return False
  10.         return True

  11. print([num for num in range(10, 100) if isPrime(num % 10) and isPrime(num // 10)])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 17:22:37 | 显示全部楼层
明天要去军训了,一个星期都不能摸可爱的python了,

  1. def fun190(num=100):
  2.     for each in range(10,num+1):
  3.         if each % 2 != 0 and each % 3 != 0 and each % 5 != 0 and each % 7 != 0:
  4.             print(each)
  5.             count = 0
  6.             for i in str(each):
  7.                 if i in '2357':
  8.                     count += 1
  9.                 else:
  10.                     pass
  11.             if count == len(str(each)):
  12.                 print(each)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 17:55:11 | 显示全部楼层
本帖最后由 JessiFly 于 2018-7-24 17:56 编辑
  1. def isprime(n):
  2.     if n == 1:
  3.         return False
  4.     elif n == 2:
  5.         return True
  6.     elif n % 2:
  7.         n_sqrt = n ** 0.5
  8.         i = 3
  9.         while i <= n_sqrt:
  10.             if n % i == 0:
  11.                 return False
  12.             i += 1
  13.         return True
  14.     else:
  15.         return False

  16. for n in range(10,100):
  17.     a = n // 10
  18.     b = n % 10
  19.     if isprime(n) and isprime(a) and isprime(b):
  20.         print(n)
复制代码

结果
  1. 23
  2. 37
  3. 53
  4. 73
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-7-24 18:05:11 | 显示全部楼层
本帖最后由 zhou995287902 于 2018-7-24 21:26 编辑
  1. def isprime(number):
  2.     if number==0 or number==1:
  3.         return False
  4.     else:
  5.         for i in range(2,number//2+1):
  6.             if number%i==0 :
  7.                 break
  8.         else:
  9.             return True

  10. for each in range(10,100):
  11.     if isprime(int(str(each)[0])) and isprime(int(str(each)[1])) and isprime(each):
  12.         print(each)
  13.    
  14.         
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-7-24 18:07:30 | 显示全部楼层
本帖最后由 晓屁屁 于 2018-7-25 09:40 编辑

class Prime:
    def search(self,num):
        for i in range(2, num):
            if num%i == 0:
                return False
        return True
    def pos(self,num):
        if len(str(num)) == 2:
            self.gew = num%10
            self.shw = num//10%10
            return (self.shw,self.gew)

p = Prime()
a = []
for i in range(2,100):
    if p.search(i) and p.pos(i) != None:
        a.append(p.pos(i))
    else:
        pass
for j in a:
    if p.search(j[0]) and p.search(j[1]) and j[0] != 1:
        print(''.join([str(i) for i in j] ))
    else:
        pass

为了练习类,写的很low
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 18:48:58 | 显示全部楼层
  1. def isp(x):
  2.     if x>1:
  3.         if x==2:
  4.             return True
  5.         if x%2==0:
  6.             return False
  7.         for i in range(3, int(x**0.5 + 1), 2):
  8.             if x % i == 0:
  9.                 return False
  10.         return True
  11.     return False
  12. for i in range(2,100):
  13.     if isp(i) and isp(i//10) and isp(i%10):
  14.         print(i)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-7-24 19:25:36 From FishC Mobile | 显示全部楼层
本帖最后由 凌九霄 于 2018-7-26 15:48 编辑

  1. def isPrime(n):
  2.     if n <= 1:
  3.         return False
  4.     i = 2
  5.     while i * i <= n:
  6.         if n % i == 0:
  7.             return False
  8.         i += 1
  9.     return True


  10. def outP(num):
  11.     bool = True
  12.     if isPrime(num):
  13.         strnum = str(num)
  14.         for i in strnum:
  15.             if not isPrime(int(i)):
  16.                 bool = False
  17.                 break
  18.     else:
  19.         bool = False
  20.     return bool


  21. X = [x for x in range(20, 100) if outP(x)]

  22. print(X)
复制代码


[23, 37, 53, 73]


  1. from itertools import permutations
  2. from math import sqrt

  3. A = [p for p in list(map(lambda x: x[0] * 10 + x[1], list(permutations([2, 3, 5, 7], 2)))) if
  4.      0 not in [p % d for d in range(2, int(sqrt(p)) + 1)]]
复制代码


  1. import itertools

  2. nums = list(map(lambda x: x[0] + x[1], list(itertools.permutations(('2', '3', '5', '7'), 2))))

  3. def checkit(num):
  4.     P = [2, 3, 5, 7]
  5.     rtn = 1
  6.     for i in P:
  7.         result = num % i
  8.         if result == 0:
  9.             rtn = result
  10.             break
  11.     return rtn

  12. A = [x for x in nums if checkit(int(x))]
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2018-7-24 19:29:13 | 显示全部楼层
  1. def func():
  2.     def is_prime(x):
  3.         import math
  4.         if x<2:
  5.             return False
  6.         temp = int(math.sqrt(x))
  7.         for i in range(2, temp+1):
  8.             if x%i == 0:
  9.                 return False
  10.         return True
  11.    
  12.     for i in range(11, 100):
  13.         if is_prime(i):
  14.             if is_prime(i//10) and is_prime(i%10):
  15.                 print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 20:07:17 | 显示全部楼层
  1. for zs in range(10,101):
  2.     n = 0
  3.     g = 0
  4.     s = 0
  5.     gw = zs%10
  6.     sw = int(zs/10)
  7.     for i in range(1,zs+1):
  8.         a=zs%i
  9.         gi=gw%i
  10.         si=sw%i
  11.         if a == 0:
  12.             n +=1
  13.         if gi == 0:
  14.             g +=1
  15.         if si == 0:
  16.             s +=1
  17.     if n == 2 and g ==2 and s ==2:
  18.         print(zs)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 20:31:12 | 显示全部楼层
本帖最后由 LeiShen 于 2018-7-24 20:37 编辑
  1. import math

  2. for number in range(10,100):
  3.         m = int(number / 10)
  4.         n = int(number % 10)
  5.         m_f,n_f,number_f = 0,0,0

  6.         for i in range(2,int(math.sqrt(m))+1):
  7.                 if m % i == 0:
  8.                         m_f = 1
  9.                         break
  10.         if m_f != 1 :
  11.                 for i in range(2,int(math.sqrt(n))+1):
  12.                         if n % i == 0:
  13.                                 n_f = 1
  14.                                 break
  15.         if m_f != 1 and n_f != 1 :
  16.                 for i in range(2,int(math.sqrt(number)+1)):
  17.                         if number % i == 0:
  18.                                 number_f = 1
  19.                                 break
  20.                 if number_f != 1 and m !=1 and n !=1:
  21.                                 print(number)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 21:16:56 | 显示全部楼层


新手就要勇往直前!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 21:44:26 | 显示全部楼层
  1. >>> def is_prime( n ):
  2.         if n < 2:
  3.                 return False
  4.         for i in range(2,int(n**0.5)+1):
  5.                 if n % i == 0:
  6.                         return False
  7.         return True

  8. >>> is_prime(4)
  9. False
  10. >>>
  11. >>> def fun():
  12.         ls = [2,3,5,7]
  13.         r = []
  14.         for x in ls:
  15.                 for y in ls:
  16.                         t = x*10+y
  17.                         if is_prime( t ):
  18.                                 r.append( t )
  19.         print(r)

  20.        
  21. >>> fun()
  22. [23, 37, 53, 73]
  23. >>>
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2018-7-24 22:08:32 | 显示全部楼层
  1. def func190():
  2.     num = 100
  3.     result = []
  4.    
  5.     for i in range(10,100):
  6.         flag = 0
  7.         for j in range(2,i):
  8.             if i%j == 0:
  9.                 flag = 1
  10.         if flag == 0 :
  11.             result.append(i)
  12.     return result

  13. print(func190())
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 22:27:05 | 显示全部楼层
def Isprime(x):
    if x<2:
        return False
    for i in range(2,x):
        if x%i==0:
            return False
    return True

for i in range(1,101):
    c = i
    flag =1
    while i:
        b = i%10
        if Isprime(b):
            i = int(i/10)
        else:
            flag = 0
            break
    if flag == 1:
        print(c)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 01:06:07 | 显示全部楼层
答案
TIM图片20180725010511.png

点评

发代码吧,这个无法试着运行  发表于 2018-7-28 20:37
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 09:26:11 | 显示全部楼层
def isprime(n):       
        if n==2:
                return True
        if n==1 or n%2==0:
                return False       
        for i in range(3,int(n**0.5)+1,2):
                if n%i==0:
                        return False
        return True

print([x for x in range(10,101) if isprime(x) and isprime(x%10) and isprime(x//10)])

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-7-25 09:54:48 From FishC Mobile | 显示全部楼层
自己写了一个,提示最后一个判断是int和nonetype做与运算,问题出在哪 IMG_20180725_095403.jpg

点评

个位数//10为0,带入函数没有返回值  发表于 2018-7-28 20:39
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 09:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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