用pascal语言验证哥德巴赫猜想(任何充分大的偶数都可由两个素数之和表示)
答案:1 悬赏:80 手机版
解决时间 2021-03-26 17:20
- 提问者网友:美人性情
- 2021-03-26 04:29
用pascal语言验证哥德巴赫猜想(任何充分大的偶数都可由两个素数之和表示)
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-03-26 04:52
输入:一个整数n
算法思想:
1.用数组建立n以内的素数
2.查看n mod 2是否为素数(是就好办了)
3.分别从两边进行搜索,到n mod 2停止(节省时间),找到一对时停止
4.输出追问给个样例?追答什么样例?追问写一个程序做例子追答自己写才能锻炼追问第三步不会追答第三步打错了,不应该是n mod 2,应该是n以内的素数个数的一半,个数可在第一步中记录
for i:=1 to m mod 2 do
for j:=m downto m mod 2 +1 do
if a[i]+a[j]=n then begin writeln(n,'=',a[i],'+',a[j]);*************(退出循环,什么语句我忘了。。。囧);end;
或者
x:=true;i:=1;
while x and i<=m mod 2 do begin
for j:=m downto m mod 2 +1 do
if a[i]+a[j]=n then begin writeln(n,'=',a[i],'+',a[j]);x:=false;end;
inc(i);
end;
你也可以自己优化
(m是n以内的素数个数)
算法思想:
1.用数组建立n以内的素数
2.查看n mod 2是否为素数(是就好办了)
3.分别从两边进行搜索,到n mod 2停止(节省时间),找到一对时停止
4.输出追问给个样例?追答什么样例?追问写一个程序做例子追答自己写才能锻炼追问第三步不会追答第三步打错了,不应该是n mod 2,应该是n以内的素数个数的一半,个数可在第一步中记录
for i:=1 to m mod 2 do
for j:=m downto m mod 2 +1 do
if a[i]+a[j]=n then begin writeln(n,'=',a[i],'+',a[j]);*************(退出循环,什么语句我忘了。。。囧);end;
或者
x:=true;i:=1;
while x and i<=m mod 2 do begin
for j:=m downto m mod 2 +1 do
if a[i]+a[j]=n then begin writeln(n,'=',a[i],'+',a[j]);x:=false;end;
inc(i);
end;
你也可以自己优化
(m是n以内的素数个数)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯