标题:用Python判断质偶数
只看楼主
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 18楼 东海ECS
while True:
...     try:
...         a = 1
...         b = 0
...         c = input('请输入一个数字:')
...         c = eval(c)
...         for i in range(c):
...             if c % a == 0:
...                 b += 1
...             if a < c:
...                 a += 1
...         if b > 2:
...             print('这是一个合数')
...         else:
...             print('这是一个质数')
...     except:
...         print("错误")
...         exit()
...
请输入一个数字:997
这是一个质数
请输入一个数字:

这个程序可以运行,速度仍然是太慢,输入12345678911111111十几分钟过去了也没有算出来只好强行停止了
2023-01-31 11:35
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
while True:
...     try:
...         a = 1
...         b = 0
...         c = input('请输入一个数字:')
...         c = eval(c)
...         d=c**0.5
...         e=int(d)
...         for i in range(e):
...             if c % a == 0:
...                 b += 1
...             if a < c:
...                 a += 1
...         if b > 2:
...             print('这是一个合数')
...         else:
...             print('这是一个质数')
...     except:
...         print("错误")
...         exit()
...
请输入一个数字:12345678911111111
这是一个质数
请输入一个数字:

这样速度快了,仍然是错误的,应该是:b>=2
2023-01-31 11:45
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
回复 22楼 ysr2857
没看懂,输入数字的0.5次幂什么意思?望赐教.

会当凌绝顶,一览众山小.
2023-01-31 11:56
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
程序代码:
while True:
    try:
        c = input('请输入一个数字:')
        c = eval(c)
        if c <= 1:
            print("无法计算.")
            exit()
        b = 0
        list1 = [2,3,5,7,11,13,17,19]
        for i in range(7):
            if c % list1[i] == 0:
                b = b + 1
        if b >= 2:
            print("合数")
        else:
            print("质数")
    except:
        print("错误")
        exit()

这个快很多,但是有些特殊的数字会出错

会当凌绝顶,一览众山小.
2023-01-31 12:02
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
while True:
    try:
        a = 1
        b = 0
        c = input('请输入一个数字:')
        c = eval(c)
        d=c**0.5
        e=int(d)
        for i in range(e):
            if c % a == 0:
                b += 1
            if a < c:
                a += 1
        if b >= 2:
            print('这是一个合数')
        else:
            print('这是一个质数')
    except:
        print("错误")
        exit()

[此贴子已经被作者于2023-1-31 12:07编辑过]

2023-01-31 12:04
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
由于1既不是质数也不是合数,而且质合数一般是自然数(不包括0)
所以要加检验代码:
程序代码:
if c <= 1:
    print("无法计算.")
    exit()

会当凌绝顶,一览众山小.
2023-01-31 12:09
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
while True:
...     try:
...         a = 1
...         b = 0
...         c = input('请输入一个数字:')
...         c = eval(c)
...         d=c**0.5
...         e=int(d)
...         for i in range(e):
...             if c % a == 0:
...                 b += 1
...             if a < c:
...                 a += 1
...         if b >= 2:
...             print('这是一个合数')
...         else:
...             print('这是一个质数')
...     except:
...         print("错误")
...         exit()
...
请输入一个数字:12345678911111111
这是一个合数
请输入一个数字:
2023-01-31 12:12
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 24楼 东海ECS
while True:
...     try:
...         c = input('请输入一个数字:')
...         c = eval(c)
...         if c <= 1:
...             print("无法计算.")
...             exit()
...         b = 0
...         list1 = [2,3,5,7,11,13,17,19]
...         for i in range(7):
...             if c % list1[i] == 0:
...                 b = b + 1
...         if b >= 2:
...             print("合数")
...         else:
...             print("质数")
...     except:
...         print("错误")
...         exit()
...
请输入一个数字:997
质数
请输入一个数字:12345678911111111
质数
请输入一个数字:12345678911111113
质数
请输入一个数字:14629
质数
请输入一个数字:
这个快,需要列全素数表,否则就输出错误结果了。
2023-01-31 12:16
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:19
帖 子:376
专家分:1454
注 册:2023-1-24
得分:0 
回复 27楼 ysr2857
[原内容已被撤销]

[此贴子已经被作者于2023-1-31 12:19编辑过]


会当凌绝顶,一览众山小.
2023-01-31 12:17
ysr2857
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:767
专家分:65
注 册:2020-2-10
得分:0 
回复 23楼 东海ECS
求平方根的,试除方根内的整数。
这样速度就快了,否则太慢了!
2023-01-31 12:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509458-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054198 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved