From f6cd1008ddbfd66af12446671a3f9f6e27644e32 Mon Sep 17 00:00:00 2001 From: Muhammad Sabry <85039719+MuhammadS25@users.noreply.github.com> Date: Sun, 30 Oct 2022 00:38:24 +0200 Subject: [PATCH 1/2] Adding Solution for 237-C Codeforces --- C++/Primes on Interval-237-C.cpp | 56 ++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 C++/Primes on Interval-237-C.cpp diff --git a/C++/Primes on Interval-237-C.cpp b/C++/Primes on Interval-237-C.cpp new file mode 100644 index 0000000..12ddbd3 --- /dev/null +++ b/C++/Primes on Interval-237-C.cpp @@ -0,0 +1,56 @@ +#include + +using namespace std; + +const int N = 1e6 + 5; + +typedef long long ll; + +int a, b, k; +int cntPrimes[N]; +bool notPrime[N]; + +void seive() +{ + notPrime[0] = notPrime[1] = true; + for(ll i = 2; i < N; i++) + { + if(notPrime[i]) continue; + for(ll j = i * i; j < N; j += i) + { + notPrime[j] = true; + } + } + for(int i = 2; i < N; i++) + { + cntPrimes[i] += cntPrimes[i - 1] + (!notPrime[i]); + } +} + +bool valid(int l) +{ + for(int i = a; i + l - 1 <= b; i++) + { + if(cntPrimes[i + l - 1] - cntPrimes[i - 1] < k) return false; + } + return true; +} + +int main() +{ + seive(); + scanf("%d%d%d", &a, &b, &k); + int s = 1, e = b - a + 1, mid, l = -1; + while(s <= e) + { + mid = s + (e - s) / 2; + if(valid(mid)) + { + l = mid; + e = mid - 1; + } + else s = mid + 1; + } + printf("%d\n", l); + return 0; +} \ No newline at end of file From 47b1f3b599925639bd6a71ff556f83ab4404cca3 Mon Sep 17 00:00:00 2001 From: Muhammad Sabry <85039719+MuhammadS25@users.noreply.github.com> Date: Sun, 30 Oct 2022 00:42:00 +0200 Subject: [PATCH 2/2] Adding All Sieve Functions --- C++/All Sieve Functions.txt | 102 ++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 C++/All Sieve Functions.txt diff --git a/C++/All Sieve Functions.txt b/C++/All Sieve Functions.txt new file mode 100644 index 0000000..4a64d1d --- /dev/null +++ b/C++/All Sieve Functions.txt @@ -0,0 +1,102 @@ +bool Not_prime[N]={}; +bool IsPrime(int n) +{ + if (n==2) + return true; + if (n<2||n%2==0) + return false; + for (int i=3; i*i<=n; i+=2) + if (n%i==0) + return false; + return true; +} +vectordivisors; +void Divs(ll n) +{ + for (ll i=1; i*i<=n; ++i) + { + if (n%i==0) + { + divisors.push_back(i); + if (!(i*i==n)) + divisors.push_back(n/i); + } + } +} +ll NoofDivisors(ll n) +{ + ll cnt=1; + for (ll i=2; i*i<=n; ++i) + { + int power=0; + while (n%i==0) + { + n/=i; + ++power; + } + cnt*=(power+1); + } + if (n>1) + cnt*=2; + return cnt; +} +int number_of_divisors[N]= {}; +void Sieve_NoofDivisors(int n) +{ + number_of_divisors[0]=number_of_divisors[1]=1; + for (int i=2; i*i<=n; ++i) + if (!number_of_divisors[i]) + for (int j=i; j primes; +void prime_fact(ll n) +{ + bool ok=false; + for(ll i = 2 ; i * i <= n ; i++) + { + while(n % i == 0) + { + ok=1; + n /= i; + } + if(ok) + primes.push_back(i); + ok=0; + } + if(n > 1) + primes.push_back(n); +} +void Sieve() +{ + Not_prime[0]=Not_prime[1]=true; + for (ll i=2; i*i<=N; ++i) + if (!Not_prime[i]) + for (ll j=i*i; j<=N; j+=i) + Not_prime[j]=true; +} +int cntPrime[N]; +void seive() +{ + for(ll i=2; i