Esempio n. 1
0
	def testEuclidGCD(self):
		# Test for primes:
		for p in Primes.primes[:self.__primeCount]:
			for q in Primes.primes[:self.__primeCount]:
				self.assertEqual(Helpers.euclidGCD(p,q), (p if p == q else 1), "Failed for a=%d, b=%d" % (p,q))
		# Test for other values:
		testValues = { (7,30):1, (35,5):5 }
		for val in testValues.items():
			self.assertEqual(Helpers.euclidGCD(val[0][0], val[0][1]), val[1], "Failed for a=%d, b=%d" % val[0])
Esempio n. 2
0
	def testPhiFunction(self):
		# Test for primes:
		for p in Primes.primes[:self.__primeCount]:
			self.assertEqual(Helpers.phiFunction(p), p-1, "Failed for n=p=%d" % p)
		# Test for products of 2 primes:
		for p in Primes.primes[:self.__primeCount]:
			for q in Primes.primes[:self.__primeCount]:
				if p != q:
					self.assertEqual(Helpers.phiFunction(p*q), (p-1)*(q-1), "Failed for n=p*q=%d*%d" % (p, q))
		# Test for other values:
		testValues = { 1:1, 8:4, 20:8, 436:216 }
		for val in testValues.items():
			self.assertEqual(Helpers.phiFunction(val[0]), val[1], "Failed for n=%d" % val[0])
Esempio n. 3
0
	def testParsePositiveInt(self):
		# Test for illegal values:
		try:
			Helpers.parsePositiveInt("abc")
		except ValueError:
			pass
		else:
			self.fail("Should raise ValueError when called with a non-number!")
		try:
			Helpers.parsePositiveInt(-5)
		except ValueError:
			pass
		else:
			self.fail("Should raise ValueError when called with a negative number!")
		try:
			Helpers.parsePositiveInt(0)
		except ValueError:
			pass
		else:
			self.fail("Should raise ValueError when called with zero!")
		# Test for legal values:
		testValues = { 5:5, 7.3:7, 7.9:7 }
		for val in testValues.items():
			self.assertEqual(Helpers.parsePositiveInt(val[0]), val[1])
Esempio n. 4
0
	def testPrimeFactorization(self):
		testValues = { 1:[], 2:[(2,1)], 7:[(7,1)], 8:[(2,3)], 20:[(2,2),(5,1)], 436:[(2,2),(109,1)] }
		for val in testValues.items():
			self.assertEqual(Helpers.primeFactorization(val[0]), val[1], "Failed for n=%d" % val[0])