QQ登录

只需一步,快速开始

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

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

[复制链接]
最佳答案
0 
累计签到:4 天
连续签到:1 天
achencan 发表于 2018-1-11 18:06:01 | 显示全部楼层
  1. # -*- coding:UTF-8 -*-
  2. def sushu(num):
  3.     res=True
  4.     for x in range(2,num-1):
  5.         if num%x==0:
  6.             res=False
  7.             return res
  8.     return res

  9. def jadge(n):
  10.     for i in range(1,n+1):
  11.         if sushu(i) and sushu(n-i):
  12.             return i

  13. list_1 = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
  14. for x in list_1:
  15.     if not jadge(x):
  16.         list_1.pop(list_1.index(x))
  17. print(list_1)
复制代码
最佳答案
0 
累计签到:84 天
连续签到:1 天
cupbbboom 发表于 2018-1-13 10:20:41 | 显示全部楼层
第一次做做了好久
  1. # 判断是否为质数
  2. def is_prime_num(number):
  3.     list1 = [] # 如果这个列表长度为0,则为质数
  4.     number = int(number)
  5.    
  6.     for i in range(2,number):
  7.             if number % i == 0:
  8.                 list1.append(i)
  9.                
  10.     if len(list1) == 0:
  11.         return True # 是质数 为True
  12.     else:
  13.         return False #不是质数为False

  14. #筛选
  15. def is_prime_adding(number):
  16.     number = int(number)
  17.     list2 = []
  18.     adding = []
  19.     for i in range(2,number):
  20.         for j in range(i,number):
  21.             if i + j == number:
  22.                 if is_prime_num(i) is True and is_prime_num(j) is True:
  23.                     list2.append(number)
  24.                     adding.append([i ,'+', j])                 
  25.     if len(list2) != 0: # 这里因为list2 为0 ,adding 也一定为0,所以不用判定adding
  26.         for each in range(len(list2) -1): #删除list2 中重复的元素
  27.             del list2[each]
  28.         print(list2)
  29.         print(adding) # 打印符合条件的和的组合
  30.    
  31. # 输入任何范围,可打印出符合的结果
  32. for number in range(31):
  33.     is_prime_adding(number)
复制代码

求版主批改,和优化建议
最佳答案
2 
累计签到:35 天
连续签到:1 天
graceasyi 发表于 2018-1-15 14:21:36 | 显示全部楼层
没看答案,自己做了遍。每天进步一点点

def is_prime(n):
    for i in range(2, n):
        if n % i == 0:
            return False
    else:
        return True


list1 = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
l1=[]
for v in list1:
    n = round(v / 2)
    for j in range(2, n+1):
        if is_prime(j):
            if is_prime(v-j):
                if v not in l1:     # 去掉重复的
                    l1.append(v)

print(l1)

结果:
[5, 6, 8, 13, 14, 15, 16, 20, 21, 24, 26, 30]
最佳答案
0 
累计签到:74 天
连续签到:4 天
dunhee 发表于 2018-2-8 16:32:48 | 显示全部楼层
  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 isPrimeSum(n):
  6.     for x in range(2, n//2+1):
  7.         if isPrime(x) and isPrime(n-x): return True
  8.     return False

  9. def f(L):
  10.     return [x for x in L if isPrimeSum(x)]

  11. L = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]

  12. print(f(L))
复制代码
最佳答案
1 

尚未签到

kwty 发表于 2018-2-8 18:52:46 | 显示全部楼层
  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. L = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
  11. for i in L:
  12.         for j in range(i // 2 + 1):
  13.                 if isPrime(j) and isPrime(i - j):
  14.                         print('%2d = %d + %d'%(i, j, i-j))
  15.                         break
复制代码
最佳答案
1 
累计签到:60 天
连续签到:1 天
Elastcio 发表于 2018-2-9 10:39:07 | 显示全部楼层
  1. prime=[2,3,5,7,11,13,17,19,23,29]
  2. list1 = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
  3. result = []

  4. for each in list1:
  5.     [(result.append(each)) for i in range(2, each//2+1) if (i in prime) and (each - i in prime)]
  6. print(set(result))
复制代码
12
返回列表
12

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-27 08:57

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