關於一種6的倍數判定素數的方法

2022-01-12 10:16:43 字數 498 閱讀 3068

原理非常簡單:

除了2,3,以外對於任意的n,只有6n-1和6n+1有可能是素數。(注意是有可能)

證明:

6n不是素數,因為他一定有因數2和3;

6n+2,6n+3,6n+4同樣不是(分別為2,3,2的倍數)於是只剩下了6n+1和6n+5(6n-1)

那麼,判斷的數範圍縮小為原來的三分之一

具體來講:如果判斷的數n%6!=-1或1的話,直接返回false不為質數

如果滿足條件,它有可能是質數,做進一步判定:

對於每乙個6n-1和6n+1來說,它一定不是2和3的倍數!(也不是4和6的倍數),那麼,在列舉因子時,只需列舉6n-1和6n+1就ok了,

再加上sqrt優化。。。。

三管齊下,複雜度為o(√n/9)大概是這樣吧。

bool is_prime(int

n)

完結

關於組合問題的一種巧妙方法

在演算法設計與分析裡,組合排列 或者表面像排列組合 的問題很好的解決方法主要是回溯法,廣度優先遍曆法。這裡提供關於組合問題一種巧妙的解決辦法。比如我們要從m個元素裡取n個元素的所有組合。我們用乙個m位二進位制數代表m個元素 一位代表乙個元素 取n個元素可以看做是這個m位二進位制數中有n位的值為1.乙...

關於封裝的一種解釋

封裝這個解釋,我一直喜歡用cpu作為例子 cpu把所有的電阻電容閘電路等都封裝起來,只留出一些管腳 介面 讓使用者使用,cpu能暴露什麼,不能暴露什麼,是生產商設計決定的,使用者不能直接操作cpu的電阻電容等等,但可以通過給管腳適當的電壓來控制電阻電容等,也就是說使用者不能直接訪問cpu的屬性,但是...

外掛程式的一種安裝方法

今天看到eclipse color themes這款外掛程式,各種心水啊 一直是could not find 我想了一下,可能是一下兩個問題 1 我直接用的是adt自帶的eclipse,可能有bug,導致不能安裝外掛程式。2 網路問題,單位的性質比較特殊,不容許翻牆,所以母雞是不是這個問題。最後,我...