题目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

 

posted @ 2020-11-10 21:50  雨中的梦华  阅读(628)  评论(0)    收藏  举报