题目1:一个五角数被定义为n*(3*n-1)/2,其中n=1,2,3,......所以开始的几个数为5、12、15、.....,编写一个函数返回五角数,然后编写一个测试程序来使这个函数显示前100个五角数,每行显示10个
def getPentagonalNumber(n): pentagonal_number = (n * (3 * n - 1)) / 2 return pentagonal_number count = 0 NUMBER_OF_PENTAGONAL_NUMBER = 100 NUMBER_OF_PER_LINE = 10 n1 = 1 while count < 100: print(format(getPentagonalNumber(n1),"5.0f"),end = " ") n1 += 1 count += 1 if count % NUMBER_OF_PER_LINE == 0: print()
上面这段代码比较简单,个人认为应该是切合题意的了,但是我有个小疑问,如何判断一个数是否为五角数呢?我只想出了一种方法,但是运行时间过长,下面是另外一段代码,欢迎各位大神指点迷津.
def isPentagonalNumber(number): lst1 = [] for i in range(number+1): pentagonal_number = (i * (3 * i - 1)) / 2 lst1.append(pentagonal_number) if number in lst1: return True count = 0 NUMBER_OF_PENTAGONAL_NUMBER = 100 NUMBER_OF_PER_LINE = 10 number = 1 while count < 100: if isPentagonalNumber(number): print(format(number,"6d"),end = ' ') count += 1 if count % NUMBER_OF_PER_LINE == 0: print() number += 1

浙公网安备 33010602011771号