用matlab求满足1-1000任意三个素数满足p1+p2=p3的程序?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 17:33:06
用matlab求满足1-1000任意三个素数满足p1+p2=p3的程序?
xTN@}HJ(رULH%HR DB[ZQ.miI"q:?㵝/K333ʔ3.;;;_Uqx{M'i^6=2>ul5_M-O>ͤ3=dzD8tpw'V-?^w bzίW~sD"8?qc^DqCB<5G="CH!+]@sqSqCmN^AsJ<7o{dnK,3]{Dm Frqi懵N*i ͣXPR'4ӆC7N&f6 YĤSM0TnM*3o̖?+ܬ

用matlab求满足1-1000任意三个素数满足p1+p2=p3的程序?
用matlab求满足1-1000任意三个素数满足p1+p2=p3的程序?

用matlab求满足1-1000任意三个素数满足p1+p2=p3的程序?
如果p1和p2是两个奇素数,那么p3就是偶数了,所以不可能也是素数.
所以p1和p2里面一定有一个偶素数,也就是唯一的一个偶素数2.
不妨固定p1=2,只要求p2和p3就好,也就是说p3-p2=2,两个奇素数之差为2.
matlab里有两个关于素数的函数,
primes(N)用来求自然数N以内所有素数.
isprime(n)用来判断n是否为素数.
我这里只用了primes().
下面是程序和运行结果
n=primes(1000); % 找出1000以内所有素数
i=find(diff(n)==2); % 找出相邻两项之差为2的项的位置
p1=2*ones(size(i)); % p1固定为2,个数和i相同
p2=n(i); % p2为相差为2的相邻两项的前一项
p3=n(i+1); % p3为两项中的后一项
p=[p1',p2',p3'] % 显示结果
p =
2 3 5
2 5 7
2 11 13
2 17 19
2 29 31
2 41 43
2 59 61
2 71 73
2 101 103
2 107 109
2 137 139
2 149 151
2 179 181
2 191 193
2 197 199
2 227 229
2 239 241
2 269 271
2 281 283
2 311 313
2 347 349
2 419 421
2 431 433
2 461 463
2 521 523
2 569 571
2 599 601
2 617 619
2 641 643
2 659 661
2 809 811
2 821 823
2 827 829
2 857 859
2 881 883