楼主: 孤鸿影过
850 1

SAS数据步改成宏的问题 [推广有奖]

  • 0关注
  • 0粉丝

初中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
460 点
帖子
14
精华
0
在线时间
15 小时
注册时间
2013-2-12
最后登录
2022-6-3

楼主
孤鸿影过 发表于 2013-11-2 21:04:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
初学SAS,觉得宏这部分看上去很容易理解,但是写起来总是有错……要把这个求10000内素数的数据步改成一个能求出N以下素数的宏:
data;
  x=2;
  put x;
  do x = 3 to 10000 by 2;
    i=3;
    do while (mod(x,i)^=0);
      i=i+2;
    end;
    if i>=x then put x;
end;
run;
我是这样写的:
%MACRO M(N);
data;
  x=2;
  put x;
  do x = 3 to &N;
    i=3;
    do while (mod(x,i)^=0);
      i=i+2;
    end;
    if i>=x then put x ;
  end;
run;
%MEND M;
%M(10);
运行时尝试令N=10,结果输出2和3后就卡住了。

求指导!谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:while Macro 初学sas Then Data

沙发
zhoushuai165 发表于 2013-11-2 21:31:55
%MACRO M(N);
data;
  x=2;
  put x;
  do x = 3 to &N;
   do i=2 to x-1;
    if mod(x,i)=0 and i^=x-1 then leave;
        if i=x-1 then output;
   end;
  end;
run;
proc print;
run;
%mend M;
%M(100);



   
决定成败的是人

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 05:03