1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.io.IOException;
  4. class Primenotdivisors{
  5.  
  6. private static long getFactors(long n){
  7.  
  8. long count = 0;
  9. long pf = 0;
  10. long result = 1;
  11. while((n&1) == 0){
  12. count++;
  13. n >>= 1;
  14. }
  15. if(count > 0){
  16. result = result * (count+1);
  17. pf +=1;
  18. }
  19. for(long i = 3; i <= (long)Math.sqrt(n); i += 2){
  20. count = 0;
  21. while( n%i == 0){
  22. count++;
  23. n = n/i;
  24. }
  25. if(count > 0){
  26. result = result * (count+1);
  27. pf +=1;
  28. }
  29. }
  30. if( n > 2){
  31. result = result * (2L);
  32. pf +=1;
  33. }
  34. return result - pf;
  35. }
  36. public static void main(String []args)throws IOException{
  37.  
  38. try{
  39.  
  40. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  41. int tc = Integer.parseInt(br.readLine());
  42. StringBuilder sb = new StringBuilder();
  43. while(tc-- > 0){
  44. long N = Long.parseLong(br.readLine());
  45. sb.append(getFactors(N)+"\n");
  46. }
  47. System.out.println(sb.toString());
  48.  
  49. }catch(Exception e){
  50. return ;
  51. }
  52. }
  53. }
Language: Java