搜索
查看: 986|回复: 9
打印 上一主题 下一主题

这是怎么回事

[复制链接]
跳转到指定楼层
楼主
发表于 2013-12-19 21:50:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币

下面这个求质数的程序,当我输入位数较大的数时,如123484654564时,电脑显示是质数,怎么回事

#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,c;
    c=0;
    scanf("%d",&b);
    for(a=2;a<b;a++)
        {
                if(b%a==0)
                {
                        c=1;
                         printf("%d\n",a);
                }
        }
    if(c==0)
                printf("质数\n");
    else
        printf("合数\n");
        system("pause");
        return 0;
}

WP_20131219_21_29_33_Pro (2).jpg (59.08 KB, 下载次数: 9)

WP_20131219_21_29_33_Pro (2).jpg

最佳答案

查看完整内容

123484654564 > 2^31 - 1 一个int已经放不下了 而且这么大的数字,用试除法耗费的时间是无法忍受的 如果想解决这个问题,可以研究一下用C实现无限精度运算和Rabin-Miller素性测试
沙发
发表于 2013-12-19 21:51:00 | 只看该作者
123484654564 > 2^31 - 1
一个int已经放不下了

而且这么大的数字,用试除法耗费的时间是无法忍受的

如果想解决这个问题,可以研究一下用C实现无限精度运算和Rabin-Miller素性测试
板凳
 楼主| 发表于 2013-12-20 07:49:09 来自手机 | 只看该作者
rosynirvana 发表于 2013-12-20 00:50 123484654564 > 2^31 - 1 一个int已经放不下了

谢谢。。。(如果想解决这个问题,可以研究一下用C实现无限精度运算和Rabin-Miller素性测试)。。。这个不懂
地板
发表于 2013-12-20 09:43:19 | 只看该作者
星辰幻影 发表于 2013-12-20 07:49
谢谢。。。(如果想解决这个问题,可以研究一下用C实现无限精度运算和Rabin-Miller素性测试)。。。这个不 ...

缓冲区溢出
5#
发表于 2013-12-20 13:02:20 | 只看该作者

这个主题和缓冲区溢出有什么关系?
6#
发表于 2013-12-20 13:08:08 | 只看该作者
星辰幻影 发表于 2013-12-20 07:49
谢谢。。。(如果想解决这个问题,可以研究一下用C实现无限精度运算和Rabin-Miller素性测试)。。。这个不 ...

如果你想用C算随便多大的数字,就去网上找找“无限精度运算”,或者“大数运算”

此外,用这种方法来验证大数的素性是没戏的,运算时间太长了,如果你想知道这么大的数字怎么判断素性,就去查Rabin-Miller Test
7#
发表于 2013-12-20 15:00:41 | 只看该作者
rosynirvana 发表于 2013-12-20 13:08
如果你想用C算随便多大的数字,就去网上找找“无限精度运算”,或者“大数运算”

此外,用这种方法来 ...

额,我感觉你在论坛里也说过
8#
发表于 2013-12-20 15:01:21 | 只看该作者
rosynirvana 发表于 2013-12-20 13:02
这个主题和缓冲区溢出有什么关系?

我怎么感觉它们是连在一起的……
9#
发表于 2013-12-20 15:36:16 | 只看该作者
4399APPLE 发表于 2013-12-20 15:01
我怎么感觉它们是连在一起的……

缓冲区溢出和数字太大了溢出不是一回事情
10#
 楼主| 发表于 2013-12-22 18:03:38 | 只看该作者
谢谢了,涨知识了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表