主题:一道我认为的难题~~~~~~~
tanchenggang
[专家分:0] 发布于 2005-03-22 18:23:00
求1-100之间的素数。
注:素数是大于1,且除了1和它本身外,不能被其它任何整数所整除的整数。
回复列表 (共6个回复)
沙发
飘曳 [专家分:50] 发布于 2005-03-22 19:26:00
/* c++算法 */
for(i=2;i<=100;flag=1,i++)
{for(j=2;j<=sqrt(i);j++)
if(!i%j) {flag=0;break;}
if(flag) cout<<i;
}
板凳
yvonne [专家分:20] 发布于 2005-03-22 21:01:00
var
i,k,n : integer;
prime : boolean;
begin
for i := 2 to 100 do begin
prime := true;
n := trunc(sqrt(i));
k := 2;
while (k <= n) and prime do begin
if i mod k = 0 then prime := false;
k := k+1;
end;
if prime then write(i:8);
end;
end.
3 楼
xuzhenyi [专家分:850] 发布于 2005-03-23 18:20:00
var
i,j,count:integer;
flag:boolean;
begin
count:=0;
for i:=2 to 100 do
begin
flag:=true;
for j:=2 to round(sqrt(i)) do
if i mod j=0 then flag:=false;
if flag then
begin
write(i:3);
count:=count+1;
/*if count mod 5=0 then writeln;*/(美观)
end;
end;
end.
4 楼
carroon [专家分:0] 发布于 2005-03-23 21:29:00
筛法 书上有
5 楼
dreamboy [专家分:0] 发布于 2005-03-25 19:26:00
为什么可以用
n := trunc(sqrt(i));??
6 楼
sb191919 [专家分:40] 发布于 2005-03-25 20:51:00
[em2]因为一个数的因数只在他平方根以内(n/sqrt(n)+1是小于N的,而小的已经穷举过了).
我来回复