data primes;
length status $12.;
do i=3 to 6;
status='Prime';
do j=2 to i-1;
if mod(i, j) = 0 then do;
status='Composite';
leave; *exit loop;
end;
end;
Output;
end;
run;
proc print data = primes;
run;
我编写了这段代码并获得了如下输出。有人可以解释一下如何在这里选择j的价值吗?当循环进入j = i-1
时,如何在输出中j = i Obs status i j
1 Prime 3 3
2 Composite 4 2
3 Prime 5 5
4 Composite 6 2
答案 0 :(得分:3)
我与循环停止的方式有关。在索引变量递增后,检查在循环的顶部完成。如果它大于停止值,则循环停止。您可以使用直到(j eq i-1)停止循环并查看您期望的值。 DO循环使用GT停止的原因是因为增量可能永远不会具有停止的确切值。
还要注意这一切都在书中。 DO Statement, Iterative