51nod 1434 數論區間LCM問題

2021-07-09 14:21:19 字數 767 閱讀 4650

題意:

乙個整數序列s的lcm(最小公倍數)是指最小的正整數x使得它是序列s中所有元素的倍數,那麼lcm(s)=x。

例如,lcm(2)=2,lcm(4,6)=12,lcm(1,2,3,4,5)=60。

現在給定乙個整數n(1<=n<=1000000),需要找到乙個整數m,滿足m>n,同時lcm(1,2,3,4,...,n-1,n) 整除 lcm(n+1,n+2,....,m-1,m),即lcm(n+1,n+2,....,m-1,m)是lcm(1,2,3,4,...,n-1,n) 的倍數.求最小的m值。

分析:

51分類上說的是乙個四級的演算法,然後就一直想啊想啊的。讓我們求1,2,3,,,,,n的lcm還是比較容易的,就是求解這個區間中的質數的最大倍數小於等於n的那些數,乘起來就可以得到lcm,當然了這一題我們不需要乘,只需要將這些數字都記錄寫來就可以了的。

我們不需要求出n,n+1....m的lcm,只需要保證這個lcm可以被前面的lcm整數就可以了,也就是可以整除前面記錄的所有值

#include #include #include #include #include #include using namespace std;

int const maxn = 1000005 ;

int flag ; //最大的質數

int num ; //質數的個數

int a[maxn];

bool prime[maxn];

void prime()

} }}int main()

cout<

51nod 1434 區間LCM 質因數分解

分析 考慮從1到n所有數的質因數分解,記錄每個質數的最高次數,同理從n 1迴圈到2n,如果迴圈到m時每個質因子的次數都不低於所記錄的,則跳出迴圈,結果即為m。先預處理質數,複雜度為o nlongn 1 include2 include3 include4 include5 using namespa...

51nod 1106 質數檢測 數論)

1106質數檢測 基準時間限制 1秒 空間限制 131072kb 分值 0難度 基礎題 收藏關注 取消關注 給出n個正整數,檢測每個數是否為質數。如果是,輸出 yes 否則輸出 no input 第1行 乙個數n,表示正整數的數量。1 n 1000 第2 n 1行 每行1個數 2 s i 10 9 ...

51nod 1225 餘數之和 數論

1225 餘數之和 f n n 1 n 2 n 3 n n 其中 表示mod,也就是餘數。例如f 6 6 1 6 2 6 3 6 4 6 5 6 6 0 0 0 2 1 0 3。給出n,計算f n 由於結果很大,輸出mod 1000000007的結果即可。輸入1個數n 2 n 10 12 輸出f n...