找回密码
 加入
搜索
查看: 4151|回复: 10

经典计算教程02-求素数

  [复制链接]
发表于 2009-12-23 08:42:54 | 显示全部楼层 |阅读模式
本帖最后由 bob 于 2009-12-23 08:44 编辑

给出结果,隔天给代码。还是望新手多参加,老鸟多飘过!

链接上篇:经典计算教程01-电脑猜数

求3~1000之间的素数。素数或称质素,即指除了1和它本身之外不能被其他整数整除的大于等于2的整数。

判别方法很多,不要求给出很精炼的代码,本文目的也只是为了学习循环结构而已。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2009-12-23 08:43:18 | 显示全部楼层
暂未隔天写分析~~
发表于 2009-12-23 10:30:11 | 显示全部楼层

“新手”来报道,另外 质素 应改为 质数

#include <Array.au3>
Dim $i,$a=0,$b,$N[1]
For $i = 3 To 1000 Step 2
        $a = 0
        For $b IN $N
                        If Mod($i, $b) = 0 Then
                                        $a = 1
                                        $N[0]=Ubound($N)-1
                                        ExitLoop
                        EndIf
        Next
        If $a = 0 Then
                        Redim $N[Ubound($N) + 1]
                        $N[Ubound($N) - 1] = $i
        EndIf
Next
_ArrayDisplay($N)
发表于 2009-12-23 12:11:25 | 显示全部楼层
我一般都是效率最低
$_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)
 楼主| 发表于 2009-12-23 17:30:10 | 显示全部楼层
呵呵,四楼Sqrt用的很好,效率比3楼要高点!
发表于 2009-12-23 20:10:35 | 显示全部楼层
4楼的不错,学习了。。。我新手来着的,不会写其他,只会这个
发表于 2009-12-23 22:48:59 | 显示全部楼层
#include <Array.au3>
Local $n=1000,$flag=False,$a[1]
For $i = 3 To $n Step 2
        $flag=False
        For $s = 1 To $a[0]
                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[Ubound($a) + 1]
        $a[Ubound($a) - 1] = $i
                $a[0]=Ubound($a)-1
        EndIf
Next
_ArrayDisplay($a, $n&"以内的素数")
先把3放进素数数组,然后for循环检测当前数是否可以被素数数组内的数整除,把不能整除的加入素数数组
发表于 2009-12-24 08:56:01 | 显示全部楼层
楼上的跟我的很相似嘛!?
发表于 2009-12-24 10:22:55 | 显示全部楼层
我也来玩一下
$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)
发表于 2010-6-16 20:26:46 | 显示全部楼层
学习中,谢了
发表于 2010-6-16 20:46:18 | 显示全部楼层
新手!!学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 22:02 , Processed in 0.087175 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表