jjw888jjw 发表于 2009-3-24 17:56

这个素数判定程序哪里错了

n=11; M=2^(n)-1; k=0;
for i=2:M^(1/2)
   if rem(M,i)==0, k=1; end
end
if k==0 fprintf('%d 是素数\n',n); else fprintf('%d 不是素数\n',n); end

为什么结果11不是素数 13是素数?(梅森数)

[ 本帖最后由 ChaChing 于 2009-3-24 19:11 编辑 ]

ljq2008 发表于 2009-3-24 18:30

你的程序有问题吧 M=2^(n)-1是什么意思??素数有这么判定的吗?

jjw888jjw 发表于 2009-3-24 18:42

M=2^(n)-1
只要M是素数n必为素数这就是梅森数

ChaChing 发表于 2009-3-24 19:08

楼主的程序是判断该数是否为梅森数, 并非判断是否为素数!
2^11-1本就不是梅森数

ljq2008 发表于 2009-3-24 19:08

很明显有问题
2^11-1=2047
2047/73=89
显然2047不是素数!

ChaChing 发表于 2009-3-24 19:15

回复 5楼 ljq2008 的帖子

2047/23=89

jjw888jjw 发表于 2009-3-24 19:22

:@) 我理解错了
谢谢两位了
页: [1]
查看完整版本: 这个素数判定程序哪里错了