matlab 编程 编制函数M文件求出某自然数范围内的全部素数,即给定参量n之后,能求出1到n之间的全部素数

matlab 编程 编制函数M文件求出某自然数范围内的全部素数,即给定参量n之后,能求出1到n之间的全部素数,第1张

这是最传统的做法

function a=question(n)

a=[];

for i=2:n

k=0;

for j=2:i-1

if ~mod(i,j)

k=1;

break;

end

end

if ~k

a=[a,i];

end

end

这是另外一种做法

function a=question(n)

a=2:n;b=zeros(1,n-1);

for i=2:sqrt(n)

b(i(2:(n/i))-1)=i(2:(n/i));

end

a=a(~b);

楼上的做法也可以,只不过他利用了matlab自带的判断素数的函数isprime

A = primes(300); % 300以内所有素数

for i = 1:length(A),

a = floor(A(i)/100);

b = floor((A(i)-a100)/10);

c = A(i)-a100-b10;

Asum(i) = a+b+c;

end

% 判断各位之和是否为奇,结果:

A(find(mod(Asum, 2) == 1))

知道你意思了,这是函数文件,需要在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= 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))

方法一:

a(1)=input('请输入一个正整数:');

s=1;

while a(s)~=0;

s=s+1;

a(s)= input('请输入一个正整数:');

end;m=a(isprime(a)==1)

方法二:

clear;f=input('输入');i=1;

while f~=0

if isprime(f)

z(i)=f;

i=i+1;

end;

f=input('输入');

end;z

方法三:

y(1)=input('请输入第1个数:');

i=1;

while y(i)~=0

i=i+1;

y(i)=input(['请输入第',num2str(i),'个数:']);

end

disp('输入结束!敲任意键继续')

pause;

k=1;

for a=1:i

b=y(a);

if b==1;

d(k)=1;

k=k+1;

end

if b==2

d(k)=2;

k=k+1;

end

for c=2:(b-1)

if mod(b,c)==0;

break;

end;

e=c

end;

if e==(b-1);

d(k)=b;

k=k+1;

end

end

disp('素数为d:')

d

个人觉得第一种方法比较好!!!!!因为比较短!!!!呵呵

素数就是只能被1和本身整除的整数。j依次为100到1000之内的整数(每次循环+1),i为从2到j-1的依次+1的整数,判断j能否被i整除,若都不能则j即为素数,记下标志位flag,并将j计入数组prime中。输出prime

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、其他数学家给出了一些不同的证明。欧拉利用黎曼函数证明了全部素数的倒数之和是发散的,恩斯特·库默的证明更为简洁,哈里·弗斯滕伯格则用拓扑学加以证明。

-质数

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11673219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存