mod1.asv

来自「为配套王能超版本数值分析简明教程编写,方便学生教师演示!」· ASV 代码 · 共 89 行

ASV
89
字号
function mod1(a,c,b)
A=gongyuesu(a,b);
if rem(c,A)==0
    a=a/A;
    b=b/A;
    c=c/A;
    B=1;
    if a<0
        a=-a;
        b=-b;
        c=-a;
        if b<0
            b=-b;
            B=-1;
        end
    elseif b<0
           b=-b;
           B=-1;
    end
    k=1;
    if a<b
        
        t=a;
        a=b;
        b=t;
        d=b;
        a2=a;
        b2=b;
        r=rem(a,b);
        q(k)=fix(a/b);
        while r~=0
            a=b;
            b=r;
            d=r;
            r=rem(a,b);
            k=k+1;
            q(k)=fix(a/b);
        end
        p(1)=1;
        p(2)=q(1);
        Q(1)=0;
        Q(2)=1;
        for i=3:k
            p(i)=p(i-1)*q(i-1)+p(i-2);
            Q(i)=Q(i-1)*q(i-1)+Q(i-2);
        end
        a1=(-1)^k*Q(k)*c;
        b1=(-1)^(k-1)*p(k)*c;
        fprintf('x=%d+%d*t\n',b1,a2);
        fprintf('y=%d+(%d)*t',a1,-B*b2);
        fprintf('\nt=');
        for i=0:A-1;
            fprintf('%d,',i);
        end
    else
        a2=a;
        b2=b;
        d=b;
        r=rem(a,b);
        q(k)=fix(a/b);
        while r~=0
            a=b;
            b=r;
            d=r;
            r=rem(a,b);
            k=k+1;
            q(k)=fix(a/b);
        end
        p(1)=1;
        p(2)=q(1);
        Q(1)=0;
        Q(2)=1;
        for i=3:k
            p(i)=p(i-1)*q(i-1)+p(i-2);
            Q(i)=Q(i-1)*q(i-1)+Q(i-2);
        end
        
        a1=(-1)^k*Q(k)*c;
        b1=(-1)^(k-1)*p(k)*c;
        fprintf('x=%d+(%d)*t\n',a1,-B*b2);
        fprintf('y=%d+%d*t',b1,a2);
        fprintf('\nt=');
        for i=0:A-1;
            fprintf('%d,',i);
        end
    end
else
    disp('此同余式无解')
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?