容斥原理求1到n與k互質個數

2021-07-23 14:33:15 字數 615 閱讀 1555

參考部落格:傳送門

題目:hdu 4135

此處的k<=1e9、

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int qq = 10005;

int num;

int prime[qq];

void analyze(ll x)

if(x>1) prime[num++] = x;

}ll slove(ll x){

ll ans = 0;

for(ll i = 1; i<(1<

之前還在想num的大小,前10個最小的質數的乘積是小於3e9, 所以完全不用擔心num的大小

之前還想為什麼i*i > 1e9就出迴圈,  其實想想算數基本定理, 如果x已經迴圈到i*i>1e9了, 說明此時的x就是個質數(x的原始大小最大只有1e9)

反證法:假設x是乙個和數,因為x<=1e9的, 那麼乙個和數肯定能分解為乙個小的質數乘乙個大的質數,但是此時顯然在i後面找不到這麼一對質數是的乘積等於x、

因為i*i本身就》1e9, 後面的數隻會比i大、 所以此時x就是個質數

質因子 容斥原理求與n互質的個數

求乙個數的質因子,將質因子儲存在a,並返回質因子的個數 int init ll n if n 1 這裡要記得 a idx n return idx 1 求 1,m 內與n互質的個數,用佇列陣列實現容斥原理 ll fid ll m for ll i 1 i t i sum sum m que i re...

容斥原理 求 1 m 中與m不互質的數的個數

容斥原理的實現 1.佇列陣列 3.二進位制表示 佇列陣列是列舉所有情況,可能有時候空間上存不下?dfs的優點是用時間換空間 ps 1.int fac 15 13 1e8,所以質因子的個數小於15 long long 的話21 ull,25肯定夠 2.二進位制 注意空集不要算 3.如果要求 1.n 中...

與n互質的平方和 容斥 數學

題目描述 小李子有n 1個朋友,分別編號為1.n 1,小李子的編號是n 小李子的表面朋友的編號會與小李子編號互質 我們定義小李子老年生活的悲慘度是表面朋友的編號的平方和 輸入 多組輸入 小於等於10000組 每組輸入乙個n 1e6 輸出 輸出小李子的悲慘度 樣例輸入 2 3 分析 求1 n與n互質的...