• Source
    1. #include <bits/stdc++.h>
    2. using namespace std;
    3. const int n=1e6+5;
    4. vector<int>prime(n,true);
    5.  
    6. void sieve(){
    7. for (int p = 2; p * p <= n; p++) {
    8. if (prime[p] == true) {
    9. for (int i = p * p; i <= n; i += p)
    10. prime[i] = false;
    11. }
    12. }
    13. }
    14.  
    15.  
    16.  
    17. int main()
    18. {
    19. int q;cin>>q;
    20. sieve();
    21. vector<int>pre(n,0);
    22. for(int i=2; i<=n; i++){
    23. if(prime[i])pre[i]=pre[i-1]+1;
    24. else pre[i]=pre[i-1];
    25. }
    26. while(q--){
    27. int a,b,k;
    28. cin>>a>>b>>k;
    29. int ans=INT_MAX;
    30. int low=a-1,high=b+1,mid;
    31. while(low<high){
    32. mid=(low+high)/2;
    33. if(pre[mid]-pre[a-1]>=k){
    34. ans=min(ans,mid);
    35. high=mid;
    36. }
    37. else low=mid+1;
    38. }
    39. if(ans==INT_MAX || ans>b)ans=-1;
    40. cout<<ans<<endl;
    41.  
    42.  
    43. }
    44. return 0;
    45. }
    46.