回 帖 发 新 帖 刷新版面

主题:[原创]菜鸟问题 请教一下

哥德巴赫猜想:将一个奇数拆分成三个素数之和。
要求:素数按从小到大且是最小的两个素数与另一个素数组合
如:15=2+2+11
15=3+5+7等,程序要求只输出前一种拆分方法。
样例: 
输入:15
输出:15=2+2+11
 
要求:用子程序实现判素数


我编的是

 var m,n,i,j:integer;
 function ss(x:integer):integer;
 var k,f:integer;
 begin
     f:=1;
     for k:=2 to trunc(sqrt(x)) do
        if x mod k=0 then begin
                                f:=0;
                                break;
                          end;
     ss:=f;
 end;
 begin
        read(n);
        m:=n;
        for i:=2 to m-1 do
            if ss(i)+ss(m-i)=1 then if ss(i)=0 then
                                        begin
                                                for j:=2 to i-1 do
                                                    if ss(j)+ss(i-j)=2 then
                                                        begin
                                                              writeln(n,'=',m-i,'+',j,'+',i-j);
                                                              exit;
                                                        end;
                                        end
                                     else
                                         begin
                                                for j:=2 to m-i-1 do
                                                    if ss(j)+ss(m-i-j)=2 then
                                                        begin
                                                              writeln(n,'=',i,'+',j,'+',m-i-j);
                                                              exit;
                                                        end;
                                         end;
 end.




答案有的对有的错,请大虾在原题上修改并跟帖发送,菜鸟感谢不已!!!

回复列表 (共16个回复)

11 楼

初学pascal  加群28276316

12 楼

楼上的,你拉人参加群也用不着如此积极吧?

13 楼

以前我也做過類似一道題目,不過設如此复雜

14 楼

都是笨蛋...挖哈哈

15 楼


哥德巴赫是谁?[em18]

16 楼

你写的是哥德巴赫原来想的。告诉你,后来被一个叫欧拉的人被化简为:一个>=4的偶数=两个质数相加

我来回复

您尚未登录,请登录后再回复。点此登录或注册