TEMA

Wrong Answer 20%

Allan25 preguntado 5 years ago

Olá pessoal, estou há algum tempo trabalhando nessa questão. As entradas e saídas de exemplo estão ok, mas ainda estou com 20% de WA. Alguém sabe me explicar o que tem de errado?

def crivo(n):
    from math import sqrt, ceil
    primos_ate_n = [False, False]+[True for i in range(2, int(ceil(sqrt(n))+2))]
    for i in range(len(primos_ate_n)):
        if primos_ate_n[i]:
            try:
                for j in range(i*i, len(primos_ate_n), i):
                    primos_ate_n[j] = False
            except IndexError:
                break
    primos_ate_n = [i for i in range(len(primos_ate_n)) if primos_ate_n[i]]
    return primos_ate_n

def decompor(n, crivo):
    primos_ate_n = [i for i in crivo if i <= n]
    fatores = list(); i = 0
    while n != 1:
        if n%primos_ate_n[i] == 0:
            n = n/primos_ate_n[i]
            fatores.append(primos_ate_n[i])
        else:
            i += 1
        if i == len(primos_ate_n):
            return [n]
    return fatores

def divisores(fatoresn):
    fatores_primos = fatoresn
    divisores = [1]
    for f in fatores_primos:
        divisores += [f*j for j in divisores if f*j not in divisores]
    return divisores

def despojado(n, crivo):
    fatores = decompor(n, crivo)
    if len(fatores) < 2:
        return False
    for i in fatores:
        if fatores.count(i) > 1:
            return False
    return True

n = int(input())
crivo = crivo(n)
count = 0
fatores = decompor(n, crivo)
divisores = divisores(fatores)
for i in divisores: 
    if despojado(i, crivo): 
        count += 1 
print(count)

Este tema aún no ha sido contestado. ¡Sé el primero!

Recuerda no enviar soluciones. Tu mensaje puede ser revisado por nuestros moderadores.