matlab中最接近2016的质数900的质数

Matlab求十亿内所有质数的和,下面的代码为何结果不对?
sum(primes(10^9))
10^8时候答案还是对的,到了10^9答案不对啊,算出来是53808.0实际上是54535
按投票排序
原因应该不是 memory,而是浮点计算的精度问题。使用定点数字来计算,即可得到正确答案。sum(int64(primes(1e9)), 'native')
&& memory可能的最大数组:
332 MB (3.485e+08 bytes) *可用于所有数组的内存:
1158 MB (1.214e+09 bytes) **MATLAB 使用的内存:
625 MB (6.551e+08 bytes)物理内存(RAM):
3251 MB (3.409e+09 bytes)*
受可用的连续虚拟地址空间限制。** 受可用的虚拟地址空间限制。所以 1亿ok 10亿就挂了。
已有帐号?
社交帐号登录
无法登录?
社交帐号登录查看: 10499|回复: 9|关注: 0
哪位帮我编一个筛选法求素数matlab程序啊
用筛选法求某自然数范围内的全部素数。
& & 素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。用筛选法求素数的基本思想是:要找出2~m之间的全部素数,首先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数 (不包括5),…,直到再划去不超过的数的倍数,剩下的数都是素数。
[ 本帖最后由 vincent92 于
00:30 编辑 ]
关注者: 24
你不能把整个题目都抛给别人啊,至少要自己做一做,然后遇到问题再来讨论
关注者: 2
不用划到m,到根号m就可以。自己学着编一下。
关注者: 1
还不如去弄个已经有的素数表
给定位数太长了,现在计算机在有限的时间内根本无法判断一个数是否是素数。
汗,事实上,我自己编了一下,但是在第十行,有点问题,输出结果虽然可以筛选出素数,但是是每一次循环的结果都出现,我自己想了一个办法,将第10行语句后打引号,使其结果不输出,在循环语句后再加a = [a i]使结果最后再输出,但是这时输出结果就包含了100,很明显100不是素数,我想了很久都没有想明白,这个错误倒底出在什么地方,望版主帮我看一下,谢谢了
a = [1]; %初始设定1为素数
for i=2:100 %找出100以内的所有素数
& & for j=2 : i
& && &&&x = rem(i,j);
& && &&&if x == 0
& && && && &
& && &&&end
& & if j==i
& && &&&a = [a i]
在循环语句后再加a = [a i]使结果最后再输出
输出结果当然就包含了100
在循环语句后直接加a 就好了
另外,三楼不是提醒你划到根号m就可以了,怎么还搜到m去了
还有,你自己都说只用质数求余,为啥还要全搜索呢?
哎。。。事实上吧,其实MATLAB本身就有找素数的函数
试一下help isprime
运行不出来:L
for i=1:998
for j=(i+1):999
a=rem(n(j),n(i));
n(find(n==0))=[];
站长推荐 /1
Powered by程序思路:对n进行分解质因数,应先找到一个最小的质数k,从2开始,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n不等于k,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行 (1)。&&Matlab实现的程序如下:clear alln=input('pelase input the number:') & & & & & & & & & &&%保存输入的值m=2; & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &%从最小的质数2开始display([num2str(n),'=']) while(1)& & & if(~mod(n,m)) & & & & & & & & & & & & & & & & & & & & & & &%找到可以整除的数& & & & & & & k=m;& & & & & & & if(n==k) & & & & & & & & & & & & & & & & & & & & & & &&%找到最后一个质数& & & & & & & & & & display([num2str(n)])& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &%跳出循环& & & & & & & else& & & & & & & & & & n=n/k; & & & & & & & & & & & & & & & & & & & & & %将n除以质数的值继续循环& & & & & & & & & & m=1; & & & & & & & & & & & & & & & & & & & & & & %保证质数还是从2开始& & & & & & & & & & display([num2str(k),'*']) & & & & & & & & &%将分解的质数显示出来& & & & & & & end& & & end& & & & & & m=m+1; & & & & & & & & & & & & & & & & &%不用担心m是不是质数,因为能被4或6等整除的,肯定能被2或3这些小的质数整除 end&也可以从另外一个角度写这个程序:(1)判断这个数n本身是不是质数,如果是,则直接打印出来;(2)如果这个数n不是质数,则找到它最小的质数k,并用n=n/k进行更新,重复(1)过程,直到满足最后的n是个质数。&本程序存在的问题是:输出不在同一行,如pelase input the number:7777=7*11pelase input the number:1111=11&所以如果有好的方法,可以积极留言~~&您的举报已经提交成功,我们将尽快处理,谢谢!
公共冷却,就是说2魔法要都用的话就有延时,现在WOW所有的宏暂时还不支持延时。还是靠你手脚吧...
消防大队创建文明单位事迹材料
XX县消防大队现有官兵XX人,其中干部X人,党员X人,团员XX人,承担着全县境内的防火监督和灭火救援任务。在创建文明单位...
大家还关注
(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'您的位置: &
Matlab环境下素数筛选算法的分析及比较
优质期刊推荐}

我要回帖

更多关于 matlab验证质数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信