text: from __future__ import print_function, unicode_literals, absolute_import, division
  
  def ProjectEuler29():
      """How many distinct terms are in the sequence generated by ab for 2  a  100 and 2  b 100?"""
      #totally,  max 99X99 number with repeated
      #first all the prime, 
      #all other 2-100: => decompose to  list of  prime**n  : 60=2**2 * 3 * 5
      #loop  all non-prime 2-100 ->  
      #----loop the power:  <=100, make it as: 2**6 3**3 5**2 7**2 
      #so , 26**2 == 13**4"""  26**25==13**100,    count += (100-25)
      #test_unique(base, power)  #  2*3*5,   [2*47]
      pass
  
  
  """
  #include <iostream>
  #include <cmath>
  #include <set>
   
  using namespace std;
   
  int main() 
  {
  	set<double> distincTerms;
  	const unsigned int lowerBound = 2, upperBound = 100; 
   
  	for (double a = lowerBound; a <= upperBound; a++) 
  		for (double b = lowerBound; b <= upperBound; b++)
  			distincTerms.insert(pow(a,b));
   
  	cout << distincTerms.size();
   
  	return 0;
  }
  """
  
  if __name__ == "__main__":
  	#ProjectEuler29()
  	#BruteForce
  	print(len(set([   a**b    for a in range(2,101)    for b in range(2,101)   ]))  )  #9183
  		