fork download
  1. #include<bits/stdc++.h>
  2.  
  3. #define ll long long int
  4.  
  5. using namespace std;
  6.  
  7. vector<int>prime(1000001,0);
  8. vector<int>mark(1000001,0);
  9. int nprime;
  10.  
  11. void sieve(int n)///FINDING PRIME
  12. {
  13. int limit=sqrt(n*1.0)+1,s=0;nprime=0;
  14. mark[1]=1;///1 if not prime.
  15. mark[2]=0;prime[nprime++]=2;
  16. //for(int i=4;i<=n;i+=2)mark[i]=1;
  17. for(int i=3;i<=n;i+=2){
  18. if(!mark[i]){prime[nprime++]=i;
  19. if(i<=limit){
  20. for(int j=i*i;j<=n;j+=i*2){
  21. mark[j]=1;
  22. }
  23. }}
  24. }
  25. }
  26.  
  27. ll nod(ll n)///Number of divisors
  28. {
  29. ll nod=1,x3=1;
  30. ll sqrtN=sqrt(n)+1;
  31. for(int i=0;prime[i]<=sqrtN&&i<nprime;i++){
  32. if(n%prime[i]==0){
  33. while(n%prime[i]==0){
  34. n/=prime[i];
  35. x3++;
  36. }nod*=x3;x3=1;
  37. }
  38. }
  39. if(n>1)nod*=2;
  40.  
  41. return nod-1;
  42. }
  43.  
  44. int main()
  45. {
  46. ll t,n,cases=0;
  47.  
  48. sieve(1000000);
  49. scanf("%lld",&t);
  50. while(t--){
  51. scanf("%lld",&n);
  52. printf("Case %lld: %lld\n",++cases,nod(n));
  53. }
  54.  
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0.01s 10840KB
stdin
Standard input is empty
stdout
Standard output is empty