易语言筛选法求素数

素数的定义:任何大于1的正整数,如果它不能被1和它本身之外的其它正整数整除,则该数为素数。找出素数(我们把找素数的范围定在2-50000内)。素数的定义:任何大于1的正整数,如果它不能被1和它本身之外的其它正整数整除,则该数为素数。 所谓筛选法,即对于2~N之内的任一整数I,其倍数2×i,3×i,4×i,……,J×I(J×I<=N),都不是素数,可以筛选掉。I从2循环至N,逐个进行筛选,那么剩下的数就是2至N之间的全部素数。比如找出50以内的所有素数,我们可以把50以内的所有数存放到一个一维数组中,把数I存放在S[I]中,对于I从2于50,如果S[i]>1,则可以把S[2*i],s[3*i],……,s[j*i]都筛选掉(清为0),当然J必须满足J×I<=50,最后输出数组中大于1的数(剩下的数)即可。

易语言筛选法求素数

窗口需要一个显示结果列表框,输入编辑框.内容输入筛选素数的范围。

.版本 2
 
.子程序 _计算图形按钮_被单击
.局部变量 数组变量, 整数型, , "0", 存放素数的数组
.局部变量 数组下标值, 整数型, , , 存放从输入编辑框中输入的数值
.局部变量 循环变量1, 整数型, , , 既用作循环变量,又作为输入范围内的所有数字
.局部变量 循环变量2, 整数型, , , 既用作循环变量,又作为输入范围内的所有数字的倍数
 
' 置“显示结果列表框的内容为空”
显示结果列表框.清空 ()
' 接收输入的数值
数组下标值 = 到数值 (输入编辑框.内容)
' 判断输入的数值范围
.如果 (数组下标值 > 1 且 数组下标值 ≤ 50000)
    ' 将输入范围内的所有数字存入数组
    .变量循环首 (1, 数组下标值, 1, 循环变量1)
        加入成员 (数组变量, 循环变量1)
    .变量循环尾 ()
    ' 将数组中每一个数的相应倍数的数值从数组中删除掉
    ' 从2循环至数组下标值 ÷ 2 + 1,逐个进行筛选
    .变量循环首 (2, 数组下标值 ÷ 2 + 1, 1, 循环变量1)
        ' 筛选
        .如果真 (数组变量 [循环变量1] > 1)
            循环变量2 = 2
            .判断循环首 (循环变量1 × 循环变量2 ≤ 数组下标值)
                数组变量 [循环变量1 × 循环变量2] = 0
                循环变量2 = 循环变量2 + 1
            .判断循环尾 ()
        .如果真结束
 
    .变量循环尾 ()
    ' 显示最后找出来的素数
    .变量循环首 (2, 数组下标值, 1, 循环变量1)
        .如果真 (数组变量 [循环变量1] > 1)
            显示结果列表框.加入项目 (到文本 (数组变量 [循环变量1]), )
        .如果真结束
 
    .变量循环尾 ()
    ' 显示找到的素数个数
    素数个数编辑框.内容 = 到文本 (显示结果列表框.取项目数 ())
    ' 显示找到的最大的素数
    最大素数编辑框.内容 = 显示结果列表框.取项目文本 (显示结果列表框.取项目数 () - 1)
.否则
    信息框 (“你输入的值无效!”, 0, )
.如果结束

分享到:

用微信扫一扫,分享给朋友


发布日期:

所属分类: 编程 标签: