鱼C论坛

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

新手头秃求助

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

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

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

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

使用道具 举报

发表于 2021-4-24 12:28:55 | 显示全部楼层
  1. n = int(input('请输入一个整数'))      
  2. for i in range(2, n):
  3.     if not n % i :
  4.         print('是合数')
  5.         break
  6.     else:
  7.         if i == n-1:
  8.             print('是素数')
  9.         
复制代码

我写的一个识别素数的程序,可以参考一下
小甲鱼最新课程 -> https://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则为素数。具体代码懒得打了,自己按照这个思路应该不难写一个。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,谢谢!我去试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 03:21:01 | 显示全部楼层
感觉要学习的东西还有很多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  4. # 用1,2,3,4组成数字,长度可能为1到4位数
  5. for n in range(1,5):
  6.     for poss in list(itertools.permutations(numbers,n)):
  7.         sum = 0
  8.         for i in poss:
  9.             sum = sum*10
  10.             sum = sum + i
  11.         # print(sum)
  12.        
  13.         # 判断数字是否为素数
  14.         for j in range(2,sum):
  15.             if not sum%j:
  16.                 # print(str(sum) + ' is composite number')
  17.                 break
  18.             elif j == sum-1:
  19.                 print(str(sum) + ' is prime numbner')
复制代码


我写的一个程序,包含组成数字和判断素数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

我的代碼:
  1. import itertools

  2. nums = [1,2,3,4]

  3. for N in range(1, 5):
  4.     for digit in list(itertools.permutations(nums, N)):
  5.         x = sum([i*(10**(len(digit)-1-n)) for n, i in enumerate(digit)])
  6.         if not any([bool(x%i == 0) for i in range(2, x)]) and x > 1:
  7.             print("%4d is Prime Number"%x)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  5. num = [1, 2, 3, 4]
  6. 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)]

  7. print(*prime)
复制代码
  1. 2 3 13 23 31 41 43 241 421 431 1423 2143 2341 4231
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 00:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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