鱼C论坛

 找回密码
 立即注册
查看: 2924|回复: 7

新手头秃求助

[复制链接]
发表于 2021-4-24 11:14:22 | 显示全部楼层 |阅读模式

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

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

x
题目要求编写程序,输出所有由1,2,3,4,这四个数字 组成的素数,并且每个素数中1,2,3,4都只使用一次
但是我不知道怎么写出判断素数的程序啊,QAQ,另外怎么样才能实现把每个符合条件的素数都举出来呢?
真的是想不出来了,拜托各位指点迷津了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-24 12:28:55 | 显示全部楼层
n = int(input('请输入一个整数'))       
for i in range(2, n):
    if not n % i :
        print('是合数')
        break
    else:
        if i == n-1:
            print('是素数')
        
我写的一个识别素数的程序,可以参考一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-24 13:13:03 | 显示全部楼层
x是否为素数的判断通常是x除以一个从2到x的数i,这个过程中若存在x%i==0,那么这个数就不是素数设置一个开关变量如count=0,如果存在x%i==0,将count赋值为1,循环结束后检查count的值,如果为1,则为合数,为0则为素数。具体代码懒得打了,自己按照这个思路应该不难写一个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-24 19:25:42 | 显示全部楼层
Hoiste 发表于 2021-4-24 13:13
x是否为素数的判断通常是x除以一个从2到x的数i,这个过程中若存在x%i==0,那么这个数就不是素数设置一个开 ...

好的,谢谢!我去试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 03:21:01 | 显示全部楼层
感觉要学习的东西还有很多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 04:18:21 | 显示全部楼层
本帖最后由 林小林 于 2021-5-15 04:20 编辑
import itertools

numbers = [1,2,3,4]
results=[]

# 用1,2,3,4组成数字,长度可能为1到4位数
for n in range(1,5):
    for poss in list(itertools.permutations(numbers,n)):
        sum = 0
        for i in poss:
            sum = sum*10
            sum = sum + i
        # print(sum)
        
        # 判断数字是否为素数
        for j in range(2,sum):
            if not sum%j:
                # print(str(sum) + ' is composite number')
                break
            elif j == sum-1:
                print(str(sum) + ' is prime numbner')

我写的一个程序,包含组成数字和判断素数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-5 01:25:41 | 显示全部楼层
林小林 发表于 2021-5-15 04:18
我写的一个程序,包含组成数字和判断素数


2 也是素數,你的代碼從 3 開始輸出

我的代碼:
import itertools

nums = [1,2,3,4]

for N in range(1, 5):
    for digit in list(itertools.permutations(nums, N)):
        x = sum([i*(10**(len(digit)-1-n)) for n, i in enumerate(digit)])
        if not any([bool(x%i == 0) for i in range(2, x)]) and x > 1:
            print("%4d is Prime Number"%x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 15:46:46 | 显示全部楼层
from itertools import permutations

f = lambda arr: eval(''.join([str(j) for j in arr]))
p = lambda arr, n: permutations(arr, n)
isPrime = lambda x: all([bool(x%y != 0) for y in range(2, x)]) and x >= 2

num = [1, 2, 3, 4]
prime = [x for x in [f(i) for i in p(num, 1)]+[f(i) for i in p(num, 2)]+[f(i) for i in p(num, 3)]+[f(i) for i in p(num, 4)] if isPrime(x)]

print(*prime)
2 3 13 23 31 41 43 241 421 431 1423 2143 2341 4231
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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