SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1251|回复: 5
打印 上一主题 下一主题

列出10000以内的素数???

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-7-28 16:42:39 | 只看该作者

列出10000以内的素数???

用sas数据步列出10000以内的素数,编写程序……
哪位大侠帮忙下
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-7-29 00:19:55 | 只看该作者

Re: 列出10000以内的素数???

Do you have to do it in SAS? I got this C code from internet, but I just don't have time to recode it in SAS. Try if you can code it in SAS under this idea. Good luck.

[code:6z79nodi]#include<stdio.h>
#include<time.h>
#define MAX 100000010
int n,p[MAX],tot=0;
double s,t;
FILE *fp;
void prime()
{ int i,j,t=sqrt(n)+1;
for(i=2;i<t;i++)
if(p[i])
{ fprintf(fp,"%d\n",i);
tot++;
j=i+i;
while(j<n)
{ p[j]=0;
j+=i;
}
}
for(i=t+1;i<n;i++)
if(p[i])
{ tot++;
fprintf(fp,"%d\n",i);
}
}
main()
{ int i;
fp=fopen("prime.txt","w");
scanf("%d",&n);
s=clock();
for(i=0;i<n;i++)
p[i]=1;
prime();
t=clock();
fprintf(fp,"Num = %d\nTime = %.0lf ms\n",tot,t-s);
fclose(fp);
}
本机测试结果:10000000用时1156ms(1.156秒)
100000000用时80秒(较慢,主要是内存太少,反复读硬盘的原因)
[/code:6z79nodi]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-7-29 07:28:20 | 只看该作者

Re: 列出10000以内的素数???

早在N年前就发过了,拜托大家在提问前一定自己先在坛子里搜一下,很多问题都是重复的。
<!-- l --><a class="postlink-local" href="http://www.mysas.net/forum/viewtopic.php?f=4&amp;t=97">viewtopic.php?f=4&amp;t=97</a><!-- l -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-7-29 17:28:04 | 只看该作者

Re: 列出10000以内的素数???

<!-- l --><a class="postlink-local" href="http://www.mysas.net/forum/viewtopic.php?f=4&amp;t=97&amp;p=12011&amp;hilit=%E7%B4%A0+%E6%95%B0#p12011">viewtopic.php?f=4&amp;t=97&amp;p=12011&amp;hilit=%E7%B4%A0+%E6%95%B0#p12011</a><!-- l -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-8-5 09:23:39 | 只看该作者

Re: 列出10000以内的素数???

谢谢3楼
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-7-4 00:27:35 | 只看该作者

Re: 列出10000以内的素数???

data a;
do t=2 to 10000;
output;
end;
data a1;
set a;
i=2;
do while (mod(t,i)^=0);
i+1;
end;
if i&lt;t then delete;
else y=t;
proc print;var y;run;
我是初学的编了一个别见笑
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 18:02 , Processed in 0.071526 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表