设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1845|回复: 6
打印 上一主题 下一主题

[胡扯] 關於判斷一個數是否為質數(素數)的腳本

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2018-1-6 00:44:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
一般來說是判斷n從2到n有沒有其他整數解
但是偶然搜到java的求質數(素數)的腳本

java中判断素数的六种方法 - CSDN博客
http://blog.csdn.net/kp_liu/article/details/37569507

該地址中判斷質數(素數)有6個循序漸進得來的方法,似乎後面的方法效率會更高一些



除了以上,按照排除偶數的方式(n%2==0 && n!=2),質數(素數)的特徵還有各位是0或5並且不是5([0,5].include?(n.to_s[-1].to_i) && n!=5)則一定不是質數(素數)、所有位總和為3的倍數并且不是3(n.to_s.split("").collect{|i|n.to_s.to_i}.sum%3==0 && n!=3)則一定不是質數(素數)等雜七雜八的判斷(5和3的部分是在進入循環前就利用位上的數字做了判斷,不過好像用處不大?)

ruby中好像還有一個低效率而且有bug(字母進入直接true)的正則表達式用來找出質數

不討論那個低效率正則表達式

那在ruby中,用各種條件篩掉一部分理所當然的合數去尋找質數來提升效率而增加代碼量是值得的嗎?(我不太清楚加入各種條件以後能提升多少···)

评分

参与人数 1+1 收起 理由
uryeuf + 1 精品文章

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

6
发表于 2018-1-6 21:41:53 | 只看该作者
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1248
在线时间
224 小时
注册时间
2017-12-12
帖子
204
5
发表于 2018-1-6 21:33:43 | 只看该作者
本帖最后由 陆言儿 于 2018-1-6 21:42 编辑

原答案大雾,一头栽进求N数以内的所有质数的坑里去了- -差点要打算讲一讲加法器乘法器除法器运算周期上去了- -
正确答案不值得,因为带来的时间提升量确实非常小,但是代码量同样小的不可以忽视我的话就会顺手写了= =
rpgmaker能涉及到的数就那么点,除非真的是在后台不断的堆栈运算,否则就那样吧。
--------------------------------------------------------------------
必然是值得的
--------------------------------------------------------------------
切记万物皆虚,你所看到的可能都只是虚假
----------------------------------------------------
只要离得远一点,再远一点,我就不会伤害到你了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23186
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

4
发表于 2018-1-6 20:20:53 | 只看该作者
n%2 == 0
==>
n & 1 == 0
效率不是高一点半点儿

点评

n & 1 == 0吗?刚才试了一下,2以上的出来都是false···  发表于 2018-1-6 20:53
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

3
 楼主| 发表于 2018-1-6 15:08:00 | 只看该作者
uryeuf 发表于 2018-1-6 09:32
啊呜先mark一下以后可能会用到(?)……
另外莫名想起当初学数学必修3的感觉…… ...

(2..n).each{|i|return false if n%i==0}这个本来就是必修3上的做法
然后还有2个数的辗转相除法、进制转换等等···
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
567
在线时间
94 小时
注册时间
2014-4-11
帖子
127
2
发表于 2018-1-6 09:32:19 | 只看该作者
啊呜先mark一下以后可能会用到(?)……
另外莫名想起当初学数学必修3的感觉……
和论坛ID不一样的,个人的现用圈名是“夜晚的观察家”。
一个立志成为真正的作家的无名小卒。
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 22:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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