ブルーブリッジカップ、最大最小公約数、python

2200 ワード

タイトルの説明
    

       N,  1~N       ,               。
    

       N。

, 。
9
504
1 <= N <= 106。

構想
nが奇数である場合、nとn−2は奇数であり、n−1は偶数である場合、彼らの3つの公約数は2ではないに違いないが、この3つの数は連続しているため、2より大きい数はいずれも彼らまたはその中の任意の2つの数の公約数になることはできず、結果として彼らの3つの積である.
nが偶数である場合、n*(n−1)*(n−2)は必ずだめである.nとn−2が偶数であるため、n−2をn−3、すなわちn*(n−1)*(n−3)に変更するしかなく、この3つの数の2つの相互質があれば結果に違いない.しかし、nとn−3は3差があるので、そのうちの1つの数が3で割り切れる場合、もう1つは肯定的であってもよい.そのうちの1つができない場合、もう1つはできないに違いない.nは偶数,n−3は奇数であるため,2が彼ら二人の公因子になるはずがない.3より大きい数については、この3つの数またはその中の任意の2つの数の公約数になることは間違いないので、3を判断するだけです.
nが3を除去できると、n*(n-1)*(n-3)はだめになるに違いない.nとn-3に公約数3があるので、結果は小さくなるに違いない.n-4は偶数で、次のn*(n-1)*(n-5)=n^3-6*n^2+5*nを続けることができないが、その値は(n-1)*(n-2)*(n-3)=n^3-6*n^2+11 n-6(n>1にとって成り立つ)より小さくなるに違いない.一方,(n−1)*(n−2)*(n−3)は,前の奇数の結論から要求に合致することが分かったので,(n−1)*(n−2)*(n−3)と答えた.
nが3を除去できない場合、結果はn*(n−1)*(n−3)である.
コード#コード#
def main():
    N = int(input())
    if N%2 != 0:
        print(N*(N-1)*(N-2))
    else:
        if(N%3 == 0):
            print((N-1)*(N-2)*(N-3))
        else:
            print(N*(N-1)*(N-3))


if __name__ == "__main__":
    main()