鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

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

[复制链接]
发表于 2018-7-25 10:26:58 | 显示全部楼层
方法1:
  1. from math import sqrt
  2. def is_prime(n):
  3.     if n == 0 or n == 1:
  4.         return False
  5.     elif n == 2 or n == 3:
  6.         return True
  7.     else:
  8.         for i in range(2, int(sqrt(n))+1):
  9.             if n % i == 0:
  10.                 return False
  11.     return True

  12. def is_all_primes(num):
  13.     if num < 10:
  14.         return
  15.     else:
  16.         num_str = str(num)
  17.         for each in num_str:
  18.             if not is_prime(int(each)):
  19.                 return False
  20.         return True

  21. for i in range(100):
  22.     if is_prime(i) and is_all_primes(i):
  23.         print(i)
复制代码

方法2:
  1. from math import sqrt
  2. from itertools import permutations
  3. def is_prime(n):
  4.     if n == 0 or n == 1:
  5.         return False
  6.     elif n == 2 or n == 3:
  7.         return True
  8.     else:
  9.         for i in range(2, int(sqrt(n))+1):
  10.             if n % i == 0:
  11.                 return False
  12.     return True

  13. nums = ['2', '3', '5', '7']
  14. for each in permutations(nums, 2):
  15.     num = int(''.join(each))
  16.     if is_prime(num):
  17.         print(num, end = ' ')
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-7-25 10:46:28 | 显示全部楼层
def zhishu(x):
    result = True
    for i in range(2, x):
        if x % i == 0:
            result = False
            break
    return result


if __name__ == "__main__":
    for num in range(2, 100):
        dec = num // 10
        car = divmod(num, 10)[1]
        if zhishu(num) is True and zhishu(dec) is True and zhishu(car) is True:
            print(num)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 11:01:31 | 显示全部楼层
本帖最后由 mongoole 于 2018-8-14 15:34 编辑
  1. zhishu = []
  2. for i in range(2,101):
  3.     sqt = i // 2
  4.     while sqt > 1:
  5.         if i % sqt == 0:
  6.             # print("%d的最大公约数为:%d"%(i,sqt))
  7.             break
  8.         sqt -= 1
  9.     else:
  10.         zhishu.append(i)
  11.         # print("%d是素数"%i)
  12.         m = i // 10
  13.         n = i % 10
  14.         if m in zhishu:
  15.             if n in zhishu:
  16.                 print('这样的数有:%d'%i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 13:35:48 | 显示全部楼层
本帖最后由 天圆突破 于 2018-7-25 13:44 编辑
  1. from functools import reduce
  2. def su(n):
  3.     if not n%2 and n !=2 or n==1:return False
  4.     for i in range(3, n//2,2):
  5.         if not n%i:return False
  6.     return True

  7. lst = list(filter(lambda x:bool(reduce(lambda x,y:x*y, map(lambda x:su(int(x)),list(str(x))))), filter(lambda x:su(x),[i for i in range(10,100)])))
  8. print(lst)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 14:22:33 | 显示全部楼层
  1. def Judge(integer):
  2.     z = int(integer**0.5 + 1)
  3.     for i in range(1, z):
  4.             if (integer % i == 0) and (i != 1) and (i != integer):
  5.                 return False
  6.     return True

  7. for i in range(10, 100):
  8.     if Judge(i):
  9.         ten_number = i // 10
  10.         unit = i % 10
  11.         if Judge(ten_number) and Judge(unit):
  12.             print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 15:00:13 | 显示全部楼层

#判断整体是质数的函数

def zt_zs(s):
    x = int(s**(0.5)+1)
    for i in range(2,x):

        y = s % i
        if y == 0:            
            break   
    else:
        return s


#判断十位是质数


def ss_ss(h):
    x = h // 10

    if x>2:
        for i in range(2,int(x**0.5+1)):
            m = x%i
            if m==0:
                break

        else:
            return h

def ss_s2(h):
    y = h % 10
    if y>2:
        for i in range(2,int(y**0.5+1)):
            if y%i==0:
                break
        else:
            print (h)   

if __name__=='__main__':

    for i in range(10,101):

        h = zt_zs(i)
        if h!=None:
            h = ss_ss(h)
            if h!=None:
                ss_s2(h)

            
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 15:47:54 | 显示全部楼层
  1. import math
  2. def is_prime(number):
  3.         if number > 1:
  4.                 if number == 2:
  5.                         return True
  6.                 if number % 2 == 0:
  7.                         return False
  8.                 for current in range(3, int(math.sqrt(number) + 1), 2):
  9.                         if number % current == 0:
  10.                                 return False
  11.                 return True
  12.         return False

  13. list1 = []
  14. for i in range(100):
  15.         if is_prime(i):
  16.                 list1.append(i)

  17. list2 = []
  18. for j in list1:
  19.         if is_prime(j//10) and is_prime(j%10):
  20.                 list2.append(j)
  21.                
  22. print(list1)
  23. print(list2)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 15:53:02 | 显示全部楼层
for i in range(2,101):
    P = 0
    for j in range(2,i-1):
        if i%j == 0:
            P = 1
            break
    if P == 0:
        print (i)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 17:06:19 | 显示全部楼层
不会写,看下大神写的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 18:02:25 | 显示全部楼层
  1. def is_zhi(num):
  2.     if num == 0 or num == 1:
  3.         return False
  4.     for i in range(2,num):
  5.         if num % i == 0:
  6.             return False
  7.     return True

  8. for i in range(10,100):
  9.     if is_zhi(i):
  10.         if is_zhi(i // 10) and is_zhi(i % 10):
  11.             print(i)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 18:44:14 | 显示全部楼层
for i in range(22,100):
    if ((i//10) in (2,3,5,7)) and ((i%10) in(3,7)):
        for j in range(2,i):
            if i%j==0:
                break
        else:
            print(i)
   

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2018-7-25 19:22:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 20:10:15 | 显示全部楼层
诶,又长又臭!
  1. list1 = []
  2. for i in range(10,100):
  3.     a = 0;b = 0
  4.     for j in range(2,i):
  5.         if i%j != 0 :
  6.             a = 1
  7.         else:
  8.             b = 1
  9.     if a == 1 and b ==0:
  10.         list1.append(i)
  11. list2 = [1,2,3,5,7]
  12. for m in list1:
  13.     if ((m//10) in list2) and ((m%10) in list2):
  14.         print(m,end=" ")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 12:08:49 | 显示全部楼层
  1. list1 = [i for i in range(100) if i % 2 != 0 and i % 3 != 0 and i % 5 != 0 and i % 7 != 0]
  2. prime_list = [2,3,5,7]
  3. list2 = [i for i in list1 if len(str(i)) == 2 and int(str(i)[0]) in prime_list and int(str(i)[1]) in prime_list]
  4. list2
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 15:44:20 | 显示全部楼层
本帖最后由 chongchuigu 于 2018-7-26 21:23 编辑
  1. def prime(n):
  2.         for i in range(2,n):
  3.                 if n%i==0:
  4.                         return False
  5.         else:
  6.                 if n<2:
  7.                         return False
  8.                 else:       
  9.                         return True
  10. for i in range(10,100):
  11.         a=prime(int(str(i)[0]))
  12.         b=prime(int(str(i)[1]))
  13.         c=prime(i)
  14.         if a and b and c:
  15.                 print(i)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 16:27:27 | 显示全部楼层
  1. def isprime(n):
  2.     if n == 1 or n == 0:
  3.         return False
  4.     if n == 2:
  5.         return True
  6.     for i in range(2, int(n**0.5)+1):
  7.         if n%i == 0:
  8.             return False
  9.     return True

  10. l1 = [i for i in range(1, 10) if isprime(i)]

  11. l2 = [i for i in range(10, 100) if isprime(i)]

  12. result = [i for i in l2 if int(str(i)[0]) in l1 and int(str(i)[1]) in l1]

  13. print(result)
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 17:51:21 | 显示全部楼层
本帖最后由 管道工 于 2018-7-26 17:56 编辑

a = []
b = []
c = []
for i in range(10,101):
        cont = 0
        for l in range(1,i+1):
                if i%l == 0:
                        cont += 1
        if cont == 2:
                a.append(i)

for i in a:
        ge=i%10
        cont1 = 0
        cont2 = 0

        for l in range(1,ge+1):
                if ge%l==0:
                        cont1 += 1       
                        if l == ge:
                                if cont1 ==2 :
                                        b.append(i)
                                cont1 =0
for i in b:
        shi = int(i/10)
        for m in range(1,shi+1):
                if shi%m== 0:
                        cont2 += 1
                        if m==shi:
                                if cont2==2 :
                                        c.append(i)
                                cont2 =0
print(c)

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 18:01:42 | 显示全部楼层
  1. #返回X以内的质数列表,6N±1法则
  2. def zhisu(x):
  3.     z = [2,3]
  4.     for i in range(6,x,6):
  5.         if FindZS(i-1,z) is True:
  6.             z.append(i-1)
  7.         if FindZS(i+1,z) is True:
  8.             z.append(i+1)
  9.     return z

  10. #判断X是不是质数,zs为小于x的质数列表
  11. def FindZS(x,zs):#一个数(N)不能被小于根号N的数整除,那么这个数就是质数。
  12.     for j in zs:
  13.         if j > x**0.5:#所以当除数大于根号N的数时,跳出循环
  14.             break
  15.         if x%j == 0: #余数为0时,这个数就是合数返回False
  16.             return False
  17.     return True

  18. def zsprint(z):
  19.     l = ['1', '2' ,'3', '5', '7']
  20.     for i in z:
  21.         for j in str(i):
  22.             if j not in l:
  23.                 break
  24.         else:
  25.             print(i)

  26. if __name__ == '__main__':
  27.     n=100
  28.     zsprint(zhisu(n))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 19:07:47 | 显示全部楼层
条件范围放大一点,输入不限制100以内,输出不限制2位数
  1. def fun(n=100):
  2.     prime = [i for i in range(2, n+1) if 0 not in
  3.              (i%j for j in range(2, int(i**0.5)+1))]
  4.     result = []

  5.     for k in prime:
  6.         num = k
  7.         while num:
  8.             num, temp = divmod(num, 10)
  9.             if temp not in prime:
  10.                 break
  11.         else:
  12.             result.append(k)
  13.             
  14.     return result
复制代码

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-28 00:50:29 | 显示全部楼层
本帖最后由 丨游戏灬需要 于 2018-7-28 16:38 编辑

from math import sqrt
def is_prime(n):
    #直接拿百度的代码,因为自己想不出
    if n == 1:
        return False
    for i in range(2, int(sqrt(n))+1):
        if n % i == 0:
            return False
    return True

def q(range_ ,start = 10):
    temp = []
    a_prime = list(filter(is_prime ,range(1,11))) #此处变通性不够
    for i in range(start ,range_):
        if is_prime(i):
            temp.append(i)
    result = []
    for i in temp:
        for i2 in str(i):
            if not is_prime(int(i2)):
                break
        else:
            result .append(i)
    return result

a = q(100)
print (a)

评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 00:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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