ceil
是向离它最近的大整数圆整
如a
=
[-19,
-02,
34,
56,
7,
24+36i]
圆整后:a=[-1,0,4,
6,
7
,3+4i]
在这里选择ceil(sqrt(m)),可以快速实现查找素数目标,
你也可以选择建立2到m/2的向量
只不过sqrt(m)循环量少,算法效率更高
知道你意思了,这是函数文件,需要在command运行窗口输入,但文件名一定是函数名才可以,本文件名为:sushum
。command窗口输入过程如下:
n=7
sushu(n)
函数程序可运行,但结果错误,修改如下(有解释部分):
function [t]=sushu(n)
k=floor(sqrt(n));
for i=2:k
if mod(n,i)==0
t=0;
break;%表示当被i整出时,不是素数,终止循环
else
t=1;
end
end
a=[1:10000];
b=a(isprime(a));
Q=sum(b); %Q= 5736396
例如:
要找素数
clear all;clc;
a=1:10000;
b=isprime(a);
a=ba;
a(a(1,:)==0)=[];
size(a)
ans =
1 1229
扩展资料:
1、如果 为合数,因为任何一个合数都可以分解为几个素数的积;而N和N+1的最大公约数是1,所以不可能被p1,p2,pn整除,所以该合数分解得到的素因数肯定不在假设的素数集合中。因此无论该数是素数还是合数,都意味着在假设的有限个素数之外还存在着其他素数。所以原先的假设不成立。也就是说,素数有无穷多个。
2、其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。
-质数
a= input('请输入一个大于二的整数:');
p = true(a,1);
q = (1:1:a)'; p(1)=false;
for i = 2:1:sqrt(a)
if(p(i))
p(2i:i:end)=false;
end
end
disp(q(p))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)