7
7248470
Unregistered / Unconfirmed
GUEST, unregistred user!
题目是这样的:计算出一个包括指定数目在内的所有质数。 例:如果输入11,那么,包括11在内的所有质数为:2、3、5、7、11,也就是说一共有5个质数。 <br>能够显示出计算结果内最大的质数。 如上例,最大的质数是11。 <br>能够显示出所有算出来的质数(做为一个選項,不需要一边计算一边显示,即,如果选择“显示”质数選項的话,那么就必须将所计算出来的所有质数列举出来)。 <br>能够显示出最短所需要的计算时间(在没有一边显示计算结果的情况之下,即,不选择“显示”质数選項的情形)<br>我写的差不多了 但有两个地方还不行:<br>1.找最大的<br>2.计算时间有问题<br><br>若有更好算法 <br>请可以联系我的QQ:158189503<br>大家交流一下<br>代码如下:<br>var<br> Form1: TForm1;<br><br>implementation<br><br>{$R *.dfm}<br>function isprime(i:integer):boolean;<br>var<br> x,maxX:integer;<br>begin<br> result:=true ;<br> maxX:=trunc(sqrt(i));<br> for x:=2 to maxX do<br> if i mod x=0 then<br> begin<br> result:=false;<br> break;<br> end;<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> x,a:integer;<br> maxX,minX:integer;<br> bgtime,prTime:dword;<br>begin<br> MaxX:=Maxspin.Value;<br> MinX:=minspin.Value;<br> memo1.Clear;<br> bgtime:= Gettickcount;<br> label3.Caption:= '' ;<br> for x:=MaxX downto MinX do<br> if isprime(x) then<br> begin<br> prtime :=GetTickcount - bgtime ;<br> if (not radiobutton1.Checked)and (not radiobutton2.Checked) then<br> begin<br> memo1.Lines.Add(inttostr(x)+'.');<br> end;<br> if Radiobutton1.Checked then<br> begin memo1.Lines.Add(inttostr(x)+',');<br> end;<br> if radiobutton2.Checked then<br> begin<br> label3.Caption:= format('运算时间%d ms', [prtime]);<br> end;<br><br> end;<br>end;<br><br>end.