Foto de Jorge S.
Jorge Victor há 4 anos
Enviada pelo
Site

Não estou conseguindo extrair todos os divisores....

           ... De valores não primos, não consigo sair disso : https://ibb.co/ZSQ2wdG

           O que está faltando para eu saciar esse script ?

Python Divisores matemática algoritmos scripts
3 respostas
Professor Márcio S.
Respondeu há 4 anos
Contatar Márcio

Oi Jorge!

Para resolver essa questão, basta dividir o número (N) por todos os números de 1 até N (vamos chamá-los de N2) .

Se após a divisão de N por N2 o resto for zero, você deve armazenar N2 em uma lista.

Se a lista só tiver apenas 2 números (1 e N), N é primo, se tiver mais de 2 número ele não é primo.

Posso te ajudar a implementar esse algoritmo em Python. Me chama para uma aula particular :)

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Tutoria com IA
Converse com a Minerva IA e aprenda, tire dúvidas e resolva exercícios
Professor Amador R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano
Contatar Amador

Parece que o código Python que da imagem do link tem a intenção de verificar se um número é primo e também de listar os seus divisores. No entanto, a partir da imagem fornecida, posso ver que há um problema com a maneira como os divisores estão sendo calculados e listados.

Para corrigir o problema e listar todos os divisores de um número, você pode seguir esses passos:

  1. Verifique se o número não é primo, como você já fez.
  2. Em vez de usar a divisão inteira para listar os divisores, use um loop para testar todos os números menores que o número de entrada (exceto o 1) e verificar se eles são divisores.

Aqui está um exemplo de como você pode alterar o código para listar corretamente todos os divisores de um número inteiro (tanto positivo quanto negativo):

a = int(input('Insira um valor inteiro: '))

if a == 2 or a == -2:
    print('É um número primo')
elif a % 2 == 0:
    print('Não é um número primo')
else:
    divisores = [1]
    for n in range(2, abs(a)):
        if a % n == 0:
            divisores.append(n)
    if len(divisores) == 1:
        print('É um número primo')
    else:
        print('Não é um número primo')
        print(divisores)

Este código verifica primeiro se o número é 2 ou -2 (casos especiais de números primos). Depois, se o número for divisível por 2, ele não é primo. Para outros casos, ele verifica todos os possíveis divisores e os adiciona a uma lista se forem de fato divisores do número. Se a lista de divisores tiver apenas o número 1, então o número é primo. Caso contrário, o código imprime a lista de divisores.

Você também deve remover o código que tenta usar a divisão inteira para encontrar os divisores, pois essa abordagem não é necessária e pode levar a resultados incorretos.

Espero que isso ajude!

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Professor João N.
Respondeu há 4 anos
Contatar João Victor
Boa noite, José As regras para definição do que são um número primo estão implementadas incorretamente. Pode me contatar pelo site para maiores explicações.

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Prefere professores para aulas particulares ou resolução de atividades?
Aulas particulares
Encontre um professor para combinar e agendar aulas particulares Buscar professor
Tarefas
Envie sua atividade, anexe os arquivos e receba ofertas dos professores Enviar tarefa