0

我正在做一些小任务来提高我的编码和效率,我今天正在处理的问题来自 Euler 项目,问题 3:

“找到 600851475143 中最大的质数”

我写的代码是:

data test;

a = 600851475143;
/*The subsequent a's are the next parts of the loop I'm trying to incorporate*/
/*a = 8462696833;*/
/*a = 10086647;*/
/*a = 6857;*/

if mod(a,2) = 0 then do;

a = a / 2;

end;

else do;

    do i = 3 to a until(flag);

        if mod(a,i) = 0 and i < a then do;

            b = i ;
            a = a / b ;
            flag = 1;
            output;

        end;
    end;

end;

run;

如何使变量成为循环并变小,然后在不再有 a 时终止,即最后一次迭代不会产生数据集,因为没有分解。

我也很高兴收到有关如何使此代码更高效的任何提示,因为我正在努力学习

4

1 回答 1

2
于 2018-07-11T10:55:41.573 回答