开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2965|回复: 20
收起左侧

[易语言纯源码] 提取质数

[复制链接]
结帖率:100% (1/1)
发表于 2022-8-29 21:44:24 | 显示全部楼层 |阅读模式   重庆市重庆市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
提取从1到某个数范围内的质数
.版本 2

.子程序 _求质数按钮_被单击
.局部变量 已循环次数1, 整数型, , , 记录第一个 计次循环首 命令的已循环次数。
.局部变量 已循环次数2, 整数型, , , 记录嵌套在第一个 计次循环首 命令中的 计次循环首 命令的已循环次数。
.局部变量 数字, 整数型, , , 记录 已循环次数1 的变量值。作为一个数的范围内 的一个数字。
.局部变量 数字的除数, 整数型, , , 记录 已循环次数2 的变量值。作为一个数字的除数。

答案编辑框.内容 = “”
提示编辑框.内容 = “”
.计次循环首 (到整数 (数的范围编辑框.内容), 已循环次数1)  ' 根据 数的范围编辑框 中输入的数进行循环多少次,按从小到大提取质数。
    数字 = 已循环次数1  ' '''''''''''''''''''''''''''''''''''''将 已循环次数1 的变量值,作为 数字。

    .如果真 (数字 > 1)  ' '''''''''''''''''''''''''要是数字大于1。因为质数大于1,所以不从1开始计算。
        答案编辑框.加入文本 (到文本 (数字) + “,”)  ' 就在 答案编辑框 中,显示这个 数字。

        .如果真 (数字 ≥ 4)  ' '''''''''''''''''''''''''''''''''''''''''''''要是当前的数字大于等于4。因为已知2和3是质数,而且提取质数的算法要从4开始。
            .计次循环首 (数字, 已循环次数2)  ' ''''''''''''''''''''''''''''''''就根据当前的数字进行循环多少次。
                数字的除数 = 已循环次数2  ' '''''''''''''''''''''''''''''''''''''''''将 已循环次数2 的变量值,作为 数字的除数。

                .如果真 (数字的除数 > 1)  ' ''''''''''''''''''''''''''''''''''''要是当前数字的除数大于1。因为质数的一个因数是1,所以要跳过计算。
                    .如果真 (数字 \ 数字的除数 > 1 且 数字 % 数字的除数 = 0)  ' 要是 数字 除以 数字的除数,商的整数部分大于1。并且 数字 除以 数字的除数,商的余数部分等于0。
                        提示编辑框.加入文本 (“数字” + 到文本 (数字) + “有第三个因数” + #换行符)  ' '''''''''就在 提示编辑框 显示这个 数字 有第三个因数。
                        答案编辑框.内容 = 子文本替换 (答案编辑框.内容, 到文本 (数字) + “,”, “”, , 1, 真)  ' 删除 答案编辑框 中的的这个数字。
                        跳出循环 ()  ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''接着就跳出当前循环。不管还有没有其它因数。
                    .如果真结束

                .如果真结束
                .如果真 (数字的除数 = 数字的除数 - 1)  ' 要是当前数字的除数等于当前数字减1。
                    跳出循环 ()  ' '''''''''''''''''''''''''''''就跳出当前循环。因为质数的另一个因数是质数本身,所以要跳过计算。
                .如果真结束

            .计次循环尾 ()
        .如果真结束

    .如果真结束

.计次循环尾 ()

' 质数除了1和它本身这两个因数外,没有第三个因数。
' 1,  1/1=1......0
' 2,  2/1=2......0,  2/2=1......0
' 3,  3/1=3......0,  3/2=1......1,  3/3=1......0
' 4,  4/1=4......0,  4/2=2......0,  4/3=1......1,  4/4=1......0  从数字4开始出现了,被第三个因数整除的特征。4/2=2......0
' 5,  5/1=5......0,  5/2=2......1,  5/3=1......2,  5/4=1......1,  5/5=1......0
' 6, 6/1=6......0, 6/2=3......0,   6/3=2......0,  6/4=1......2, 6/5=1......1, 6/6=1......0


求质数.e

7.27 KB, 下载次数: 6, 下载积分: 精币 -2 枚


发表于 2022-9-1 14:10:03 | 显示全部楼层   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-8-31 14:56:20 | 显示全部楼层   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 15 天

发表于 2022-8-31 14:14:34 | 显示全部楼层   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-8-31 11:53:10 | 显示全部楼层   江苏省连云港市
感谢分享
回复 支持 反对

使用道具 举报

签到天数: 19 天

发表于 2022-8-31 10:26:55 | 显示全部楼层   四川省成都市
开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2022-8-31 09:40:45 | 显示全部楼层   北京市北京市
爱生活爱大乔 发表于 2022-8-31 09:07
另外就是 可以只判断n能不能被[2.根号n]整除,但是涉及到一次开方运算,不知道会不会拖速度 ...

已经写出来了,效率比之前的遍历算法高很多,改进的算法已上传。
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 4 天

发表于 2022-8-31 09:07:45 | 显示全部楼层   重庆市重庆市
妙转人生 发表于 2022-8-30 14:34
这个确实没想到,感谢建议。
思路有了:
先将2以外的偶数删除,减少一半循环次数。

另外就是 可以只判断n能不能被[2.根号n]整除,但是涉及到一次开方运算,不知道会不会拖速度
回复 支持 反对

使用道具 举报

结帖率:73% (8/11)

签到天数: 20 天

发表于 2022-8-30 16:44:40 | 显示全部楼层   河南省焦作市

开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)

签到天数: 16 天

发表于 2022-8-30 16:27:37 | 显示全部楼层   湖北省咸宁市
支持开源
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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