區間內無平方因子數

2022-06-27 05:36:13 字數 901 閱讀 7102

給出正整數n,m,區間[n,m]內的無平方因子數有多少個?

整數p無平方因子,當且僅當不存在k>1,使p是k^2的倍數,1<=n<=m<=10^12,m-n<=10^7

兩個整數n,m

[n,m]間的無平方因子數的個數

1 5
4
在此鍵入。

劉汝佳《入門經典》

題意 : 對於所給區間,詢問沒有平方因子的數有多少個?

思路分析 : 這個題的思想類似區間素數篩,首先將 2 到 sqrt(m)的素數全部找到,然後將所求區間內是素數平方倍數的數全部去掉,用乙個陣列去儲存,很關鍵的一點是 區間的長度時不超過 1e7 的,因此只需要開乙個這樣長度的陣列即可,計算的時候離散即可。

素數定理 : cnt(x) 約等於 x/(lnx) 。

**示例 :

#define ll long long

const int maxn = 1e6+5;

const int mm = 1e7+5;

const int mod = 1e9+7;

const double eps = 1e-9;

const double pi = acos(-1.0);

const int inf = 0x3f3f3f3f;

ll n, m;

bool pt[maxn];

bool f[mm];

void init()}}

//pt[1] = false;

}int main() }}

int cnt = 0;

for(ll i = 0; i <= m-n; i++) if (f[i]) cnt++;

printf("%d\n", cnt);

return 0;

}

UESTC618 無完全平方因子數

題意 給定乙個 n 求區間 1,n 中的無平方因子數的個數。比如說20就是乙個有平方因子數,因為 20 2 2 times 5 思路 對於乙個數,根據算術基本定理,一定可以拆成若干個整數相乘的形式,記為 x p 1 p n 的形式。那麼答案就是莫比烏斯函式的平方和。s n sum n mu 2 i ...

CD無平方數

思路 就是會有重複的地方,把重複的地方找出來,相加或相減 includeusing namespace std define n 1010010 long long p n long long n long long ans int num 0 void dfs long long s,int j,...

尋找區間內第k小的數

這是最直接暴力的方法,時間複雜度為 o nlog n 直接排序,輸出第k小的值即可 include include using namespace std const int n 1e5 10 int n,k int a n int main 時間複雜度的計算主要關注左右兩個指標的移動,總次數為 n...