ggo*_*don 4 python math sequence
我正在尝试写一张支票,以确定数字是否为五边形.五角形数字是由公式生成的数字:
PN = N(3N-1)/ 2
即第一个五边形数字是:
1,5,12,22,35,51,70,92,117,145,......
当答案应该为True时,我的代码会抛出False,因此显然不正确,但我很难理解为什么.它如下:
from math import sqrt
def is_pent(n):
ans = any((x*((3*x)-1))/2 == n for x in range(int(sqrt(n))))
return ans
Run Code Online (Sandbox Code Playgroud)
我会感谢一些帮助!
根据维基百科,为了测试正整数x是否是五角形数,您可以检查这((sqrt(24*x) + 1) + 1)//6是一个自然数.像这样的东西应该适用于不是很大的整数:
from math import sqrt
def is_pentagonal(n):
k = (sqrt(24*n+1)+1)/6
return k.is_integer()
Run Code Online (Sandbox Code Playgroud)