经典计算教程02-求素数
本帖最后由 bob 于 2009-12-23 08:44 编辑给出结果,隔天给代码。还是望新手多参加,老鸟多飘过!
链接上篇:经典计算教程01-电脑猜数
求3~1000之间的素数。素数或称质素,即指除了1和它本身之外不能被其他整数整除的大于等于2的整数。
判别方法很多,不要求给出很精炼的代码,本文目的也只是为了学习循环结构而已。
暂未隔天写分析~~
“新手”来报道,另外 质素 应改为 质数
#include <Array.au3>Dim $i,$a=0,$b,$N
For $i = 3 To 1000 Step 2
$a = 0
For $b IN $N
If Mod($i, $b) = 0 Then
$a = 1
$N=Ubound($N)-1
ExitLoop
EndIf
Next
If $a = 0 Then
Redim $N
$N = $i
EndIf
Next
_ArrayDisplay($N) 我一般都是效率最低$_var_min = 3
$_var_max = 100
$_var_result =""
$_var_boolean = "no"
For $i = $_var_min to $_var_max
$j = 2
$_var_boolean = "no"
Do
If ($i/$j) = Ceiling($i/$j) Then
$_var_boolean = "yes"
ExitLoop
EndIf
;$_var_result=$_var_result&@CRLF&$i
$j += 1
Until $j>=Ceiling(Sqrt ($i)+0.499999999)
if $_var_boolean = "no" then $_var_result=$_var_result&@CRLF&$i
Next
MsgBox(4096,"x",$_var_result) 呵呵,四楼Sqrt用的很好,效率比3楼要高点! 4楼的不错,学习了。。。我新手来着的,不会写其他,只会这个 #include <Array.au3>
Local $n=1000,$flag=False,$a
For $i = 3 To $n Step 2
$flag=False
For $s = 1 To $a
If Mod($i,$a[$s]) <> 0 Then
$flag=True
Else
$flag=False
If $i<>$a[$s] Then ExitLoop
EndIf
Next
If $flag=True Or $i = 3 Then
Redim $a
$a = $i
$a=Ubound($a)-1
EndIf
Next
_ArrayDisplay($a, $n&"以内的素数")先把3放进素数数组,然后for循环检测当前数是否可以被素数数组内的数整除,把不能整除的加入素数数组 楼上的跟我的很相似嘛!? 我也来玩一下
$ss=""
For $i=3 To 10000
For $j=2 To Sqrt($i)
If Mod($i,$j)=0 Then ContinueLoop 2
Next
$ss &= $i&" "
Next
MsgBox(0,"sushu",$ss) 学习中,谢了 新手!!学习了
页:
[1]