matlab找费马二平方素数程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题描述:
如果一个素数F能够表示成两个素数的平方和形式F=X*X+Y*Y,其中X,Y都是素数,那么F就是费马二平方素数。


13,29就称为费马二平方素数。

编程找出100以内的所有费马二平方素数。

答案:
第一个程序:编程找出100以内的所有素数
(1)打开M文件
function v=sushu(n)
n=input('输入任意一个大于3的自然数n:')
v=[] ; % 用于存储3得到n之间的所有素数
for i=3:n % 从3遍历,直至n
for j=2:i-1 % 寻找素数
if rem(i,j)==0 % 是否能整除
break% 若能整除,跳出最近的这个循环
end
end
if j==i-1 % 如果j==i-1,则说明i不能被2到j-1之间的任何数整除v=[v,i]; % 将素数存储到v中
end
end
v=[2,v];
fprintf('小于%d的素数分别为:\n',n)
(2)保存名为:sushu.m
(3)在编辑窗口中输入:
>> n=100;
>> v=sushu(n)
附:运行结果
故100以内的所有素数为v=[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97]
第二个程序:编程找出100以内的所有费马二平方素数
(1)打开M文件
function a=feima(v)
l=length(v);
a=[];
for i=1:l
for j=1:l
for k=1:l
if v(i)==v(j)*v(j)+v(k)*v(k)%即题目中的式子:F=X*X+Y*Y
a=union(a,v(i));% union是求集合并集的函数,去掉共同的元素end
end
end
end
(2)保存名为:feima.m
(3) 在编辑窗口中输入:
>> v=[2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97]; >> a=feima(v)
附:运行结果。

相关文档
最新文档