今天來做莫比烏斯,這個題就是裸的莫比烏斯,但是由於如果 想打表做的話,並不是網上寫的那樣就做不了,雖然說不能完全打出素數表,但是仔細想乙個的話,我們可以先做乙個1e6的素數表,然後進行素數分解,如果不斷進行分解後,n的值還是不為1的話,這就說明n是乙個很大的素數,因為在給定的資料範圍內每個數都被它的最小素因子篩去,如果乙個合數的最小素因子是1e6這個級別的,那樣這個數就超出了資料範圍,綜上,肯定存在乙個我們用1e6的素數表篩不到的大素數。這樣單獨判斷乙個就好
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int maxn = 1e7 + 10;
ll prime[maxn];
void getprime()
}}int miu(int n)
}if(n > 1) ans *= -1; // 判斷是否是乙個大素數
return ans;
}int main()
return
0;}
反思
篩法寫的不熟。
主觀想象沒有推理。記憶空間有誤。
51nod 1240 莫比烏斯函式
莫比烏斯函式,由德國數學家和天文學家莫比烏斯提出。梅滕斯 mertens 首先使用 n miu n 作為莫比烏斯函式的記號。據說,高斯 gauss 比莫比烏斯早三十年就曾考慮過這個函式 具體定義如下 如果乙個數包含平方因子,那麼miu n 0。例如 miu 4 miu 12 miu 18 0。如果乙...
51nod 1240 莫比烏斯函式
莫比烏斯函式,由德國數學家和天文學家莫比烏斯提出。梅滕斯 mertens 首先使用 n miu n 作為莫比烏斯函式的記號。據說,高斯 gauss 比莫比烏斯早三十年就曾考慮過這個函式 具體定義如下 如果乙個數包含平方因子,那麼miu n 0。例如 miu 4 miu 12 miu 18 0。如果乙...
莫比烏斯函式(51nod 1240)
思路 分解質因數,每找到乙個質數,判斷是否為質因數,及其對應的次數,一旦出現平方因子,輸出0 如果沒有出現平方因子,原數nu m 除去這個質因數 i 得到商nu m,num i,繼續尋找下乙個質因數,如果尋找的質因數超過了nu m 說明剩餘的數nu m 是乙個質數,則已經找到最後乙個質因數,無需繼續...