level 2
可能么?你在日本的那个每秒3700亿次*2的机器上使用一下.
2007年03月19日 05点03分
5
level 0
8.回复:求在1S秒内求出100000000内的所有质数我也不会,你自己慢慢想吧!!!作者:杨建盛
2007年03月19日 09点03分
8
level 0
varx,y,i,j:longint;zs:z;begin{assign(input,'zhishu.in');reset(input);assign(output,'zhishu.out');rewrite(output);}for i:=1 to 100000000 dofor j:=2 to 50000001 dofor y:=1 to 50000001 doif (i<>j) and (i mod j<>0)then zs[y]:=i;writeln(zs[y]);{close(input);close(output);}end.(计算的数太大了,机器卡得都死机了)(小小菜鸟)
2007年03月20日 10点03分
9
level 1
小小菜鸟,你的算法暴力了点吧,还可以在快一点点(只能一点点,因为减不了多少)var ch:boolean; a:array[1..100000] of longint; i,j,max,n:longint;begin while not eof do begin readln(n); write(1,' ',2,' '); a[1]:=2; max:=1; for i:=2 to 10000000 do begin ch:=true; for j:=1 to max do if i mod a[j]=0 then begin ch:=false; break; end; if ch then begin max:=max+1; a[max]:=i; write(a[max],' '); end; end; end;end.检测每个数的时候不用搜索那么多,只要搜索前面的质数就好.不过无论我这个是不是最快的算法,可以肯定的是现在的电脑不可能在1S秒内求出100000000内的所有质数.不信可以试一下for i:=1 to 100000000 do write(i);就执行这一行就超过1S了.
2007年03月22日 15点03分
10
level 1
上面的readln(n) 只是为了暂停程序,没意义
2007年03月22日 15点03分
11
level 0
1秒有点困难 100秒可能我曾经最快1个半小时搜索1200亿的素数但没有输出过程输出占时间太厉害求1亿素数 用筛法 只要很少乘法除法算开头的数字位置 然后用加就可以了但注意 可能需要缩小筛的规模 比如一次算1000万的数字这个筛还可以考虑提前剔除小素数的倍数 比如剔除小于20的素数的倍数当然筛的大小必须是小素数的最大公倍数的倍数
2007年03月30日 12点03分
14
level 0
写个程序输出程序建立布尔数组a[i]表示i是不是素数a:array[1..100000000]of boolean然后在写的程序里计算(用质数表)(把计算结果写在zhishu.pas里,格式a[x]:=true/false;)最后输出:for i:=1 to 100000000 do if a[i] then writeln(n)如果输出时间够的话可以1s但是输出这个程序的时间远远不止1s唯一的解法了
2007年04月19日 08点04分
19