求一定范围的最大素数 求改良算法(50分)

  • 主题发起人 主题发起人 7248470
  • 开始时间 开始时间
7

7248470

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

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
763
import
I
后退
顶部