3つのLv 1小数の和

966 ワード

質問する


ある数を3つの異なる小数の和として表すと、1つの数を求めます.例えば、33には4つの表現方法がある.
  • 3+7+23
  • 3+11+19
  • 3+13+17
  • 5+11+17
  • 自然数nをパラメータとして指定した場合、nが3つの異なる小数の和として表される場合、その数を返すために解関数を記述します.
    せいげんじょうけん
  • nは1000以下の自然数です.
  • I/O例
    nreturn33490
    I/O例説明

  • 例1
    問題の例は次のとおりです.

  • 例2
    9は3つの異なる小数の和として表すことはできません.
  • に答える


    大腸菌のふるいで少数を判別し,組合せライブラリを用いて組合せを求めた.

    コード#コード#

    from itertools import combinations
    def solution(n):
        answer = 0
        #수와 인덱스를 맞추기 위해서 1개 더함.
        numbers = [True for _ in range(n+1)]
        for i in range(2,int(n**0.5)+1):
            j = 2
            while i*j <= n:
                numbers[i*j] = False
                j += 1
        prime_number = [i for i,j in enumerate(numbers) if i > 1 and j == True]
        cp = list(combinations(prime_number,3))
        for i,j,k in cp:
            if i+j+k == n:
                answer += 1
        return answer