| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3307 人关注过本帖
标题:用Python判断质偶数
只看楼主 加入收藏
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
为了提高速度改成如下这样行吗?
for i in range(100000000000000000000000000000):
    a=1
    b=0
    c=input('请输入一个数字:')
    c=val(c)
    for i in range(c):
        if c % a == 0:
            b += 1
        if a < c:
            a += 1
    if b > 2:
        print('这是一个合数')
    else:
        print('这是一个质数')
2023-01-31 09:09
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
改成这样试试:
for i in range(100000000000000000000000000000):
    a=1
    b=0
    c=input('请输入一个数字:')
    c=int(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('这是一个质数')

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

2023-01-31 09:14
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
for i in range(100000000000000000000000000000):
...     a=1
...     b=0
...     c=input('请输入一个数字:')
...     c=int(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('这是一个质数')
...
请输入一个数字:997
这是一个质数
请输入一个数字:9999999997
这是一个质数
请输入一个数字:123456787
这是一个合数
请输入一个数字:12345678911
这是一个质数
请输入一个数字:
这回可以了,速度快了,看来和vb语言还是有很大区别的。
2023-01-31 10:04
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
for i in range(100000000000000000000000000000):
...     a=1
...     b=0
...     c=input('请输入一个数字:')
...     c=int(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('这是一个质数')
...
请输入一个数字:997
这是一个质数
请输入一个数字:9999999997
这是一个质数
请输入一个数字:123456787
这是一个合数
请输入一个数字:12345678911
这是一个质数
请输入一个数字:123456789
这是一个合数
请输入一个数字:12345678911111
这是一个合数
请输入一个数字:1234567891111111
这是一个质数
请输入一个数字:123456789111111
这是一个合数
请输入一个数字:12345678911111111
这是一个质数
请输入一个数字:

17位的数也能很快算出来,比vb语言编的是快。
2023-01-31 10:21
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
12345678911111111~12345678911111113之间的素数有个:(用时0.2539063秒)
最后一个可能有错误,应该是合数?
2023-01-31 10:27
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
请输入一个数字:12345678911111111
这是一个质数
请输入一个数字:12345678911111113
这是一个合数
请输入一个数字:12345678911111111
这是一个质数
请输入一个数字:

看来这个程序对大数据计算是有错误的,对这个数12345678911111111<17位>的判断是错的,咋回事?程序错了?
12345678911111111<17位>=239171*51618628141<11位>.
12345678911111113<17位>=269*331*138654734567<12位>.
2023-01-31 10:42
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:0 
for i in range(100000000000000000000000000000):
    a=1
    b=0
    c=input('请输入一个数字:')
    c=val(c)
    for i in range(c):
        if c % a == 0:
            b += 1
        if a < c:
            a += 1
    if b > 2:
        print('这是一个合数')
    else:
        print('这是一个质数')
两个局部变量i发生了冲突,不过没有用i,没多大关系

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


会当凌绝顶,一览众山小.
2023-01-31 10:43
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:0 
怎么要for个1000000000000000000呢?一个死循环不就可以了吗?
程序代码:
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()

顺便加个异常处理.不过有些简单粗暴,发生异常直接退出( ̄▽ ̄)~*

会当凌绝顶,一览众山小.
2023-01-31 11:06
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
for i in range(100000000000000000000000000000):
    a=1
    b=0
    c=input('请输入一个数字:')
    c=int(c)
    d=c**0.5
    e=int(d)
    for i in range(e):
        if c % a == 0:
            b += 1
        if a <= e:
            a += 1
    if b >= 2:
        print('这是一个合数')
    else:
        print('这是一个质数')
2023-01-31 11:12
ysr2857
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:809
专家分:77
注 册:2020-2-10
收藏
得分:0 
for i in range(100000000000000000000000000000):
...     a=1
...     b=0
...     c=input('请输入一个数字:')
...     c=int(c)
...     d=c**0.5
...     e=int(d)
...     for i in range(e):
...         if c % a == 0:
...             b += 1
...         if a <= e:
...             a += 1
...     if b >= 2:
...         print('这是一个合数')
...     else:
...         print('这是一个质数')
...
请输入一个数字:12345678911111111
这是一个合数
请输入一个数字:

这回对了,看来程序有问题,应该是:b>=2.
2023-01-31 11:14
快速回复:用Python判断质偶数
数据加载中...
 
   



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

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