Advertisement
Farjana_akter

Untitled

Apr 3rd, 2020
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. #define maxn 1000006
  5.  
  6. bool mark[maxn];
  7. ll isprime[maxn],psize=0,M[maxn],mu[maxn];
  8.  
  9.  
  10. void sieve()
  11. {
  12. mark[0]=true;
  13. mark[1]=true;
  14.  
  15. for(ll i=2;i*i<=maxn;i++)
  16. {
  17. if(mark[i]==false)
  18. {
  19. for(ll j=i*i;j<=maxn;j+=i)
  20. mark[j]=true;
  21. }
  22. }
  23.  
  24. for(ll i=2;i<=maxn;i++)
  25. {
  26. if(mark[i]==false)
  27. isprime[psize++]=i;
  28. }
  29. }
  30.  
  31.  
  32. ll primefact(ll x)
  33. {
  34. ll i,j,k,a,b,c,d,e,cnt=0,n=x;
  35. for(i=0;i<=psize && isprime[i]*isprime[i]<=n;i++)
  36. {
  37. if(n%isprime[i]==0)
  38. {
  39. cnt++;
  40. if(n%(isprime[i]*isprime[i])==0)
  41. {
  42. cnt=-1000;
  43. break;
  44. }
  45. n/=isprime[i];
  46. }
  47. }
  48. if(n!=1)
  49. cnt++;
  50. return cnt;
  51. }
  52.  
  53. void save()
  54. {
  55. ll cnt=0,i,j,k;
  56. M[1]=1,mu[1]=1;
  57. for(i=2;i<=1000000;i++)
  58. {
  59. ll cnt=primefact(i);
  60. if(cnt<0)
  61. mu[i]=0;
  62. else if(cnt%2==0)
  63. mu[i]=1;
  64. else
  65. mu[i]=-1;
  66.  
  67. M[i]=M[i-1]+mu[i];
  68. }
  69. }
  70.  
  71.  
  72. int main()
  73. {
  74. sieve();
  75. save();
  76.  
  77. ll n;
  78. while(cin>>n && n)
  79. {
  80. printf("%8lld%8lld%8lld\n",n,mu[n],M[n]);
  81. }
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement