m1m2_3456 2023-04-03 18:47 采纳率: 100%
浏览 27
已结题

Python用集合和平方根求解素数

问题:编写程序,输出所有由1,2,3,4这四个数字组成的所有素数,并且在每个素数中每个数字只使用一次
以下是我编写的代码

digits = (1, 2, 3, 4)
for i in digits:
    ii = i*1000
    for j in digits:
        if j == i:
            continue
        jj = j * 100
        for k in digits:
            if k == i or k == j:
                continue
            kk = k * 10
            for m in digits:
                if m != i and m != j and m != k:
                    p = ii + jj + kk + m
                    for n in range(1234, int(p**0.5)+1):
                        if p % n == 0:
                            break
                    else:
                        print(p)

但是运行结果确是输出了所有由这四个数字组成的四位数
1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 3124 3142 3214 3241 3412 3421 4123 4132 4213 4231 4312 4321
我想问一下是哪里出错了,希望能得到各位的指点

  • 写回答

2条回答 默认 最新

  • a5156520 2023-04-03 18:52
    关注

    把打印素数放到最后一个for循环结束后,然后把判断素数从2开始即可。

    修改如下:

    
    digits = (1, 2, 3, 4)
    for i in digits:
        ii = i*1000
        for j in digits:
            if j == i:
                continue
            jj = j * 100
            for k in digits:
                if k == i or k == j:
                    continue
                kk = k * 10
                for m in digits:
                    if m != i and m != j and m != k:
                        p = ii + jj + kk + m
                        prime=1  # 素数标志,默认当前的p为素数
                        #   判断素数 从2开始
                        for n in range(2, int(p**0.5)+1):
                    # 如果区间的任意一个数可以整除p,标志此数不是素数,并退出循环        
                            if p % n == 0: 
                                prime=0 
                                break
                        if prime==1: # 判断完区间所有的数都不能整除p,则p为素数,打印它
                            print(p)
                        
           
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月6日
  • 已采纳回答 4月6日
  • 创建了问题 4月3日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备