鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

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

[复制链接]
发表于 2018-1-11 18:06:01 | 显示全部楼层
# -*- coding:UTF-8 -*-
def sushu(num):
    res=True
    for x in range(2,num-1):
        if num%x==0:
            res=False
            return res
    return res

def jadge(n):
    for i in range(1,n+1):
        if sushu(i) and sushu(n-i):
            return i

list_1 = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
for x in list_1:
    if not jadge(x):
        list_1.pop(list_1.index(x))
print(list_1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-13 10:20:41 | 显示全部楼层
第一次做做了好久
# 判断是否为质数
def is_prime_num(number):
    list1 = [] # 如果这个列表长度为0,则为质数
    number = int(number)
    
    for i in range(2,number):
            if number % i == 0:
                list1.append(i)
                
    if len(list1) == 0:
        return True # 是质数 为True
    else:
        return False #不是质数为False

#筛选
def is_prime_adding(number):
    number = int(number)
    list2 = []
    adding = []
    for i in range(2,number):
        for j in range(i,number):
            if i + j == number:
                if is_prime_num(i) is True and is_prime_num(j) is True:
                    list2.append(number)
                    adding.append([i ,'+', j])                 
    if len(list2) != 0: # 这里因为list2 为0 ,adding 也一定为0,所以不用判定adding
        for each in range(len(list2) -1): #删除list2 中重复的元素
            del list2[each]
        print(list2) 
        print(adding) # 打印符合条件的和的组合
    
# 输入任何范围,可打印出符合的结果
for number in range(31):
    is_prime_adding(number)
求版主批改,和优化建议
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

def isPrimeSum(n):
    for x in range(2, n//2+1):
        if isPrime(x) and isPrime(n-x): return True
    return False

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

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

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

使用道具 举报

发表于 2018-2-8 18:52:46 | 显示全部楼层
def isPrime(n): 
  if n <= 1: 
    return False 
  i = 2 
  while i*i <= n: 
    if n % i == 0: 
      return False 
    i += 1 
  return True 

L = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
for i in L:
        for j in range(i // 2 + 1):
                if isPrime(j) and isPrime(i - j):
                        print('%2d = %d + %d'%(i, j, i-j))
                        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-9 10:39:07 | 显示全部楼层
prime=[2,3,5,7,11,13,17,19,23,29]
list1 = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
result = []

for each in list1:
    [(result.append(each)) for i in range(2, each//2+1) if (i in prime) and (each - i in prime)]
print(set(result))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-4 15:24:15 | 显示全部楼层
list1 = [5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
list2 = []

#判断是否为质数,若是则返回真
def primeConfirm(n) :
        flag = 0
        for i in range(2, n) :
                if n % i == 0 :
                        flag += 1
        if flag < 1 :
                return True
        else :
                return False

#数值分解
def numSplit() :
        tempNum = 2
        tempPrime = 0
        for i in list1 :
                tempPrime = i - tempNum
                if primeConfirm(tempPrime) :
                        list2.append(i)
                else :
                        for j in range(2, i - 1) :
                                if primeConfirm(j) and primeConfirm(i - j) :
                                        list2.append(i)
                                        break
        print(list2)

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

使用道具 举报

发表于 2019-3-21 10:38:21 | 显示全部楼层
本帖最后由 咕咕鸡鸽鸽 于 2019-3-21 10:40 编辑
from itertools import permutations as per

def is_prime(n):
    for i in range(2,int(pow(n,0.5) + 1)):
        if not n%i:
            return False
    return True

def fun135(list1):
    prime_list = [2]
    list2 = []
    #除2外,所有相近的质数之差为偶数
    for i in range(3,max(list1),2):
        if is_prime(i):
            prime_list.append(i)

    for each in list1:
        for prime in per(prime_list,2):        
            if sum(prime) == each:
                list2.append("%d = %d + %d" % (each,prime[0],prime[1]))

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

使用道具 举报

发表于 2020-5-12 20:27:51 | 显示全部楼层
def fun95(alist):
    a=[]
    b=[]
    for i in range(2,30):
        flg=1
        for j in range(2,i):
            if i%j==0:
                flg=0
                break
        if flg==1:
            a.append(i)
            
    for x in a:
        for y in a:
            if (x+y) in alist:
                b.append(x+y)
    return list(set(b))
alist=[5, 6, 8, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]
print(fun95(alist))        
[5, 6, 8, 13, 14, 15, 16, 20, 21, 24, 26, 30]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-9 14:25:23 | 显示全部楼层
def fun135(nums):   
    s = set()
    for i in range(2, max(nums) + 1):
        for j in range(2, int(i ** 0.5) + 1):
            if i % j == 0:
                break
        else:
            s.add(i)
    
    ans = []
    for num in nums:
        for k in s:
            cur = num - k
            if cur != k and cur in s:
                print("满足条件的:" + str(num), "质数:" + str(cur), "质数:" + str(k))
                break
            
    return '检查完毕!'

print(fun135([5, 6, 8, 11, 13, 14, 15, 16, 17, 20, 21, 24, 26, 27, 30]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 03:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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