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

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日

悬赏问题

  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化