我试图学习一种使用简单的sas代码打印1-100之间质数的方法。
这本书中有一种方法,但我想避免:
素数筛子,第533-534页“专业SAS编程秘密”里克阿斯特和雷纳塞德曼。第一版1991
有谁可以帮我?
发布于 2016-03-13 03:32:26
这里的诀窍是定义你的算法。您首先需要从1循环到100。
data primes;
do i=1 to 100;
*classification code;
end;
run;然后你需要定义你的算法。在这种情况下,素数可以被小于该数的数整除。你可以用暴力强迫它,测试每一个较小的数字--这就增加了另一个循环。这个循环需要从2开始,因为所有的数字都可以被1整除。
data primes;
do i=1 to 100;
do j=2 to i-1;
*classification code;
end;
end;
run;现在需要定义分类规则。在SAS中,我们可以使用MOD()函数来获得除法操作的剩余部分。素数永远不会有一个余数,即0。
data primes;
do i=1 to 100;
do j=2 to i-1;
if mod(i, j) = 0 then do;
status='Composite';
leave; *exit loop;
end;
end;
end;
run;我们可以通过添加prime的初始状态并使用显式output查看结果来细化代码。一个永远不可除数的数字保留素数的状态,而其他的数则分配给复合数。
data primes;
length status $12.;
do i=1 to 100;
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;https://stackoverflow.com/questions/35954767
复制相似问题