鱼C论坛

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

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

[复制链接]
发表于 2018-3-7 18:42:33 | 显示全部楼层
  1. def prime(num): # 判断质数函数
  2.     book = 0 #标记
  3.     for i in range(2,num):
  4.         if num%i == 0:
  5.             book = 1
  6.             break
  7.     if book == 0:
  8.         return num
  9. for i in range(2,101):
  10.     num = prime(i)
  11.     if num != None:
  12.         temp = prime(num*10+1)
  13.         if temp != None:
  14.             print(num)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 18:46:26 | 显示全部楼层
def prime_judge(num):
    if num > 1:
        for i in range(2, num):
            if (num % i) == 0:
                return False
        else:
            return True

for j in range(2,100):
    if prime_judge(j) and prime_judge(j*10+1):
        print(j)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 19:16:15 | 显示全部楼层
def min(a):
    for i in range(2,int(a ** 0.5)+1):
        if a % i == 0 :
            return 0
    return 1
for j in range(2,100):
    if min(j):
         temp=j*10+1
         if min(temp):
             print("%d"% j)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 19:27:58 | 显示全部楼层
def prime(number): #判断质数
    gole = 0
    for i in range(1,number):
        if((number % i) == 0):
            gole += 1
    if(gole == 1):
        return 1
    else:
        return 0


for i in range(100):
    if(prime(i)):
        if (prime(10*i+1)): #分别判断质数
            print("%d"%i)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 19:45:30 | 显示全部楼层
  1. def n(n):
  2.     a = {i for i in n if all(i%ii for ii in range(2,int(i**0.5)+1))}
  3.     b = {i*10+1 for i in a}
  4. #求交集
  5.     return b&a

  6. if __name__=="__main__":
  7.     print(n(range(2,100)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 19:55:05 | 显示全部楼层
  1. def isprime(num):
  2.     if num ==2:
  3.         return True
  4.     elif num%2 == 0 or num == 1:
  5.         return False
  6.     else:
  7.         i = 2
  8.         while i <= num ** 0.5:
  9.             if num%i == 0:
  10.                 return False
  11.             else:
  12.                 i += 1
  13.         return True

  14. for i in range(3,100,2):
  15.     if isprime(i):
  16.         temp = i*10 + 1
  17.         if isprime(temp):
  18.             print(i,end = ' ')
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 20:08:21 From FishC Mobile | 显示全部楼层
  1. def isPrime(n):
  2.         if n < 2:
  3.                 return False
  4.         else:
  5.                 for i in range(2, int(n**0.5)+1):
  6.                         if n % i == 0:
  7.                                 return False
  8.                 else:
  9.                         return True

  10. for i in range(1,100):
  11.         a = i * 10 + 1
  12.         if isPrime(i) and isPrime(a):
  13.                 print(i, '-->', a)

  14. ##  结果:3, 7, 13, 19, 31, 43, 97
  15. ##    3 --> 31
  16. ##    7 --> 71
  17. ##    13 --> 131
  18. ##    19 --> 191
  19. ##    31 --> 311
  20. ##    43 --> 431
  21. ##    97 --> 971
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 20:12:01 | 显示全部楼层
  1. from math import sqrt

  2. def isPrime(n):
  3.     for i in range(2, int( sqrt(n) ) + 1):
  4.         if n % i == 0:
  5.             return False
  6.     return True

  7. for i in range(2, 100):
  8.     if isPrime(i):
  9.         if isPrime(i * 10 + 1):
  10.             print(i)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 20:31:30 | 显示全部楼层
def judge(a):
    for i in range(2,a):
            if a % i == 0:
                return 0
    return 1
for i in range(2,100):
    if judge(i) and judge(10*i+1):
        print(i)
#提出一个建议:每日一题能不能出一道普通版的再出一道难一点的。。。想多练习练习

点评

会考虑不同水平的鱼油,会穿插着不同难度的题目。谢谢建议。  发表于 2018-3-8 20:12

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 20:59:31 | 显示全部楼层
  1. def q159():
  2.     p=[0]*1024
  3.     for i in range(2,32):
  4.         if not p[i]:
  5.             for j in range(2*i,1024,i):
  6.                 p[j]+=1

  7.     for i in range(2,100):
  8.         if not (p[i] or p[i*10+1]):
  9.             print(i,'满足条件')
复制代码


3, 7, 13, 19, 31, 43, 97

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 21:34:57 | 显示全部楼层
  1. def prime(number):
  2.     temp = 2
  3.     while temp < number:
  4.         if (number % temp) == 0:
  5.             return False
  6.         temp += 1
  7.     return True


  8. n = 2
  9. while n < 100:
  10.     if prime(n) == True:
  11.         s = n * 10 + 1
  12.         if prime(s) == True:
  13.             print(n)
  14.     n += 1
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 22:20:23 | 显示全部楼层
本帖最后由 天圆突破 于 2018-3-8 10:30 编辑
  1. def zhishu(n):
  2.     lst = [2]
  3.     for i in range(3, n+1, 2):
  4.         for j in range(3, int(i/2)+1):
  5.             if not(i%j):break
  6.         else:lst.append(i)
  7.     return lst

  8. if __name__ == '__main__':
  9.     print([i for i in zhishu(100) if 10*i+1 in zhishu(10*max(zhishu(100))+1)])
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 22:30:54 | 显示全部楼层
zhishu_list=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
for num in zhishu_list:
    if (num*10%6==0)or((num*10+2)%6==0):
        print("%d *10 +1 = %d" %(num,num*10+1))

点评

很巧妙的方法,但我没看懂  发表于 2018-3-8 20:18

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 22:42:10 | 显示全部楼层
  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 generate_special_primes(primes):
  13.     special_primes = []
  14.     for each in primes:
  15.         num = each * 10 + 1

  16.         if is_prime(num):

  17.             special_primes.append(each)
  18.     return special_primes

  19. if __name__ == '__main__':
  20.     primes = []
  21.     for i in range(100):
  22.         if is_prime(i):
  23.             primes.append(i)
  24.    
  25.     print(generate_special_primes(primes))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 23:30:53 | 显示全部楼层
本帖最后由 125zl 于 2018-3-8 15:06 编辑

list = []
for i in range(2,1001):
    s = 0
    for j in range(2,i):
        if i % j == 0:
            s += 1
    if s == 0:
        list.append(i)
for i in list:
    if 10 * i + 1 in list:
        print(i)

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-7 23:37:14 | 显示全部楼层
  1. import math
  2. def func_get_prime(n):
  3.     L = list(filter(lambda x: not [x%i for i in range(2, int(math.sqrt(x))+1) if x%i ==0], range(2,n+1)))
  4.     L_1 = []
  5.     for i in L:
  6.         L_1.append(int(i)*10+1)
  7.     return filter(lambda y: not [y%i for i in range(2,int(math.sqrt(y)+1)) if y%i == 0], L_1)
  8. L_2 = []
  9. for i in list(func_get_prime(100)):
  10.     L_2.append((int(i)-1)/10)
  11. print(L_2)
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-8 09:27:42 | 显示全部楼层
质数*10+1得到的质数还是100以内的质数吗?还是所有的质数都行

点评

质数是100以内,质数*10+1不限定范围  发表于 2018-3-8 20:22
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 09:29:21 | 显示全部楼层
  1. def prime(n):
  2.     num = []
  3.     for i in range(2,n):
  4.         fg = 0
  5.         for j in range(2,i-1):
  6.             if i%j == 0:
  7.                 fg = 1
  8.                 break
  9.         if fg == 0:
  10.             # print (i)
  11.             num.append(i)
  12.     return num

  13. def main():
  14.     k = prime(1000)
  15.     for g in  k:
  16.         if (g*10+1) in k:
  17.             print(g)


  18. if __name__ == "__main__":
  19.     main()
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-8 09:38:37 | 显示全部楼层
  1. def isPrime(n):
  2.     for i in range(2, int(n**0.5)+1):
  3.         if n%i == 0: return False
  4.     return n >= 2

  5. def f(n):
  6.     return [x for x in range(n+1) if isPrime(x) and isPrime(10*x + 1)]

  7. print(f(100))
复制代码

评分

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

查看全部评分

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

使用道具 举报

发表于 2018-3-8 10:01:33 | 显示全部楼层
  1. [x for x in range(0,100) if x%2 and (10*x+1)%2]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 17:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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