Criei um codigo para gerar todos os numeros compostos que se encaixem em 6x-1. sem repeticao

import math

def eh_composto(n):
“”“Verifica se um número é composto.”“”
if n < 2:
return False # Números menores que 2 não são compostos
if n % 2 == 0 and n > 2: # Otimização: verifica se é par (e maior que 2)
return True
for i in range(3, int(math.sqrt(n)) + 1, 2): # Otimização: itera apenas por ímpares
if n % i == 0:
return True # Se encontrar um divisor, é composto
return False # Se não encontrar divisores, não é composto (é primo)

def gera_compostos(limite, imprimir_lista=False):
“”“Gera uma lista com os ‘limite’ primeiros números compostos únicos.”“”
compostos = [] # Lista para armazenar os números compostos únicos
x = 1
while len(compostos) < limite: # Loop principal: continua até encontrar o limite de compostos
for y in range(limite * 5): # Loop interno: itera para diferentes valores de y
resultado = 6*(6 + 5y + (6(1+y) + 1)*x) - 1 # Aplica a fórmula
if eh_composto(resultado): # Verifica se o resultado é composto
if resultado not in compostos: # Verifica se o resultado é único (não está na lista)
compostos.append(resultado) # Adiciona o número composto único à lista
if imprimir_lista: # Imprime o número único encontrado, se a opção estiver ativada
print(f"Número composto único encontrado: {resultado}“)
if len(compostos) == limite: # Verifica se já encontrou o limite de números únicos
return compostos # Sai da função se o limite for atingido
# else:
# print(f"Número composto repetido: {resultado}”) # (Opcional) Imprime o número repetido
x += 1 # Incrementa x para gerar o próximo número
return compostos # Retorna a lista (mesmo que não tenha atingido o limite)

Escolha o limite de números compostos únicos que você deseja gerar

limite = 1000

Escolha se deseja imprimir a lista completa (opcional - pode levar tempo)

imprimir_lista = True # Defina como True para imprimir a lista ou False para não imprimir

Gerar e imprimir os números compostos únicos

compostos = gera_compostos(limite, imprimir_lista)

Mensagem final

if len(compostos) == limite:
print(f"Gerou {limite} números compostos únicos.“)
else:
print(f"Gerou {len(compostos)} números compostos, mas não {limite} únicos.”)

Se a impressão da lista estiver ativada, ela será exibida aqui

                                                                                                                                                                          (

a ia que mandei criar o codigo como eu queria criou isso e fiz o teste e gerou no limite que coloquei e mais ,mas o codigo esta como eu quero? 6+5y+(6*(1+y)+1)x x de 1 a infinito e y de 0 a infinito e (x,y) naturais? dizer se 6(6+5y+(6*(1+y)+1)*x)-1 gera 100 primeiros numeros compostos sem repeticao ele faz isso?)

Qual a dúvida?

import math

def eh_composto(n):
“”“Verifica se um número é composto.”“”
if n < 2:
return False # Números menores que 2 não são compostos
if n % 2 == 0 and n > 2: # Otimização: verifica se é par (e maior que 2)
return True
for i in range(3, int(math.sqrt(n)) + 1, 2): # Otimização: itera apenas por ímpares
if n % i == 0:
return True # Se encontrar um divisor, é composto
return False # Se não encontrar divisores, não é composto (é primo)

def gera_compostos(limite, imprimir_lista=False):
“”“Gera uma lista com os ‘limite’ primeiros números compostos únicos.”“”
compostos = [] # Lista para armazenar os números compostos únicos
x = 1
while len(compostos) < limite: # Loop principal: continua até encontrar o limite de compostos
for y in range(limite * 5): # Loop interno: itera para diferentes valores de y
resultado = 6*(6 + 5y + (6(1+y) + 1)*x) - 1 # Aplica a fórmula
if eh_composto(resultado): # Verifica se o resultado é composto
if resultado not in compostos: # Verifica se o resultado é único (não está na lista)
compostos.append(resultado) # Adiciona o número composto único à lista
if imprimir_lista: # Imprime o número único encontrado, se a opção estiver ativada
print(f"Número composto único encontrado: {resultado}“)
if len(compostos) == limite: # Verifica se já encontrou o limite de números únicos
return compostos # Sai da função se o limite for atingido
# else:
# print(f"Número composto repetido: {resultado}”) # (Opcional) Imprime o número repetido
x += 1 # Incrementa x para gerar o próximo número
return compostos # Retorna a lista (mesmo que não tenha atingido o limite)

Escolha o limite de números compostos únicos que você deseja gerar

limite = 1000

Escolha se deseja imprimir a lista completa (opcional - pode levar tempo)

imprimir_lista = True # Defina como True para imprimir a lista ou False para não imprimir

Gerar e imprimir os números compostos únicos

compostos = gera_compostos(limite, imprimir_lista)

Mensagem final

if len(compostos) == limite:
print(f"Gerou {limite} números compostos únicos.“)
else:
print(f"Gerou {len(compostos)} números compostos, mas não {limite} únicos.”)

Se a impressão da lista estiver ativada, ela será exibida aqui

o codigo é para gerar numeros compostos unicos sem repeticao ele faz isso?

a formula e essa … o codigo verifica certo?

todo composto na forma 6x-1?

o segundo codiigo é o que ta certo

import math

def eh_composto(n):
“”“Verifica se um número é composto.”“”
if n < 2:
return False # Números menores que 2 não são compostos
if n % 2 == 0 and n > 2: # Otimização: verifica se é par (e maior que 2)
return True
for i in range(3, int(math.sqrt(n)) + 1, 2): # Otimização: itera apenas por ímpares
if n % i == 0:
return True # Se encontrar um divisor, é composto
return False # Se não encontrar divisores, não é composto (é primo)

def gera_compostos(limite, imprimir_lista=False):
“”“Gera uma lista com os ‘limite’ primeiros números compostos únicos.”“”
compostos = [] # Lista para armazenar os números compostos únicos
x = 0
while len(compostos) < limite: # Loop principal: continua até encontrar o limite de compostos
for y in range(limite * 5): # Loop interno: itera para diferentes valores de y
resultado = 6*(6 + 5y + (6(1+y) + 1)*x) - 1 # Aplica a fórmula
if eh_composto(resultado): # Verifica se o resultado é composto
if resultado not in compostos: # Verifica se o resultado é único (não está na lista)
compostos.append(resultado) # Adiciona o número composto único à lista
if imprimir_lista: # Imprime o número único encontrado, se a opção estiver ativada
print(f"Número composto único encontrado: {resultado}“)
if len(compostos) == limite: # Verifica se já encontrou o limite de números únicos
return compostos # Sai da função se o limite for atingido
# else:
# print(f"Número composto repetido: {resultado}”) # (Opcional) Imprime o número repetido
x += 1 # Incrementa x para gerar o próximo número
return compostos # Retorna a lista (mesmo que não tenha atingido o limite)

Escolha o limite de números compostos únicos que você deseja gerar

limite = 1000

Escolha se deseja imprimir a lista completa (opcional - pode levar tempo)

imprimir_lista = True # Defina como True para imprimir a lista ou False para não imprimir

Gerar e imprimir os números compostos únicos

compostos = gera_compostos(limite, imprimir_lista)

Mensagem final

if len(compostos) == limite:
print(f"Gerou {limite} números compostos únicos.“)
else:
print(f"Gerou {len(compostos)} números compostos, mas não {limite} únicos.”)

Se a impressão da lista estiver ativada, ela será exibida aqui

esses sao todos numeros compostos na forma 6x-1? que nao sao primos
Número composto único encontrado: 35
Número composto único encontrado: 65
Número composto único encontrado: 95
Número composto único encontrado: 125
Número composto único encontrado: 155
Número composto único encontrado: 185
Número composto único encontrado: 215
Número composto único encontrado: 245
Número composto único encontrado: 275
Número composto único encontrado: 305
Número composto único encontrado: 335
Número composto único encontrado: 365
Número composto único encontrado: 395
Número composto único encontrado: 425
Número composto único encontrado: 455
Número composto único encontrado: 485
Número composto único encontrado: 515
Número composto único encontrado: 545
Número composto único encontrado: 575
Número composto único encontrado: 605
Número composto único encontrado: 635
Número composto único encontrado: 665
Número composto único encontrado: 695
Número composto único encontrado: 725
Número composto único encontrado: 755 …Número composto único encontrado: 29675
Número composto único encontrado: 29705
Número composto único encontrado: 29735
Número composto único encontrado: 29765
Número composto único encontrado: 29795
Número composto único encontrado: 29825
Número composto único encontrado: 29855
Número composto único encontrado: 29885
Número composto único encontrado: 29915
Número composto único encontrado: 29945
Número composto único encontrado: 29975
Número composto único encontrado: 30005
Gerou 1000 números compostos únicos. tinha cometido um erro x pode ser 0

Me defina o que é um número composto para a gente poder começar a conversar que nem duas pessoas normais. Eu acho que é só mais um devaneio seu, vc é o menino dos números que vira e mexe aparece aqui não é? Vamos lá, me convença a te ajudar.

Sua função tem essa cara aqui:
image

E ela pode ser reduzida a isso aqui:
f(x,y) = 36xy + 42x + 30y + 35

Responda para mim:

  • O que é um número composto?
  • Para que você precisa de um número desse?

que não é primo …

   import math

def eh_composto(n):
“”“Verifica se um número é composto.”“”
if n < 2:
return False # Números menores que 2 não são compostos
if n % 2 == 0 and n > 2: # Otimização: verifica se é par (e maior que 2)
return True
for i in range(3, int(math.sqrt(n)) + 1, 2): # Otimização: itera apenas por ímpares
if n % i == 0:
return True # Se encontrar um divisor, é composto
return False # Se não encontrar divisores, não é composto (é primo)

def gera_compostos(limite, imprimir_lista=False):
“”“Gera uma lista com os ‘limite’ primeiros números compostos únicos.”“”
compostos = [] # Lista para armazenar os números compostos únicos
x = 0
while len(compostos) < limite: # Loop principal: continua até encontrar o limite de compostos
for y in range(limite * 5): # Loop interno: itera para diferentes valores de y
resultado = 6*(6 + 5y + (6(1+y) + 1)*x) - 1 # Aplica a fórmula
if eh_composto(resultado): # Verifica se o resultado é composto
if resultado not in compostos: # Verifica se o resultado é único (não está na lista)
compostos.append(resultado) # Adiciona o número composto único à lista
if imprimir_lista: # Imprime o número único encontrado, se a opção estiver ativada
print(f"Número composto único encontrado: {resultado}“)
if len(compostos) == limite: # Verifica se já encontrou o limite de números únicos
return compostos # Sai da função se o limite for atingido
# else:
# print(f"Número composto repetido: {resultado}”) # (Opcional) Imprime o número repetido
x += 1 # Incrementa x para gerar o próximo número
return compostos # Retorna a lista (mesmo que não tenha atingido o limite)

Escolha o limite de números compostos únicos que você deseja gerar

limite = 1000

Escolha se deseja imprimir a lista completa (opcional - pode levar tempo)

imprimir_lista = True # Defina como True para imprimir a lista ou False para não imprimir

Gerar e imprimir os números compostos únicos

compostos = gera_compostos(limite, imprimir_lista)

Mensagem final

if len(compostos) == limite:
print(f"Gerou {limite} números compostos únicos.“)
else:
print(f"Gerou {len(compostos)} números compostos, mas não {limite} únicos.”)

Se a impressão da lista estiver ativada, ela será exibida aqui

    esses sao todos numeros compostos na forma 6x-1? que nao sao primos

Número composto único encontrado: 35
Número composto único encontrado: 65
Número composto único encontrado: 95
Número composto único encontrado: 125
Número composto único encontrado: 155
Número composto único encontrado: 185
Número composto único encontrado: 215
Número composto único encontrado: 245
Número composto único encontrado: 275
Número composto único encontrado: 305
Número composto único encontrado: 335
Número composto único encontrado: 365
Número composto único encontrado: 395
Número composto único encontrado: 425
Número composto único encontrado: 455
Número composto único encontrado: 485
Número composto único encontrado: 515
Número composto único encontrado: 545
Número composto único encontrado: 575
Número composto único encontrado: 605
Número composto único encontrado: 635
Número composto único encontrado: 665
Número composto único encontrado: 695
Número composto único encontrado: 725
Número composto único encontrado: 755 …Número composto único encontrado: 29675
Número composto único encontrado: 29705
Número composto único encontrado: 29735
Número composto único encontrado: 29765
Número composto único encontrado: 29795
Número composto único encontrado: 29825
Número composto único encontrado: 29855
Número composto único encontrado: 29885
Número composto único encontrado: 29915
Número composto único encontrado: 29945
Número composto único encontrado: 29975
Número composto único encontrado: 30005
Gerou 1000 números compostos únicos. tinha cometido um erro x pode ser 0

deixa pra la ta dando errado o codigo vou corrigir

6+5y+(6*(1+y)+1)x agora esta certo x de 0 a infinito e y de 0 a infinito e (x,y) naturais é a formula para gerar numeros compostos na forma 6t-1 6(6+5y+(6*(1+y)+1)x)-1 vc sabe quais condicoes de x e y onde 6+5y+(6(1+y)+1)*x gera valores unicos sem repetir?

Tá meu amigo, mas e daí? Onde vc quer chegar, eu não consigo entender. Vc tem uma função injetora, e daí? Sua implementação de teste de primalidade é super ingênua inclusive…

Deixa eu dar um conselho sincero, sem ironia: em todos os seus tópicos não dá pra entender o que vc quer fazer, e/ou o título não condiz com o código e com as explicações que vc dá, e/ou vc se contradiz em vários momentos, cada hora dizendo uma coisa diferente. Sugiro tentar primeiro organizar o raciocínio, pra depois vir aqui tirar suas dúvidas.


Dito isso, no título diz que vc quer “gerar todos os numeros compostos que se encaixem em 6x-1 sem repeticao”, então vamos assumir que é isso.

Se quer números da forma 6x - 1, então por que usou outra fórmula completamente diferente (6(6+5y+(6*(1+y)+1)*x)-1)? Não faz sentido.

Enfim, vamos ver uma lista dos números que são da forma 6x - 1, para diferentes valores de x:

x 6x - 1
0 -1
1 5
2 11
3 17
4 23

Repare que para x=0 o resultado é -1, e como parece que vc não quer números negativos, podemos ignorar. Outro ponto importante: note que para obter o próximo valor, basta somar 6 ao anterior.

Ou seja, o loop pode começar do 5 e ir somando 6 a cada iteração. Não tem a menor necessidade dessa fórmula que vc usou. E por isso na função eh_composto nem vou verificar valores menores que 5.

Outra coisa muito importante: isso já é o suficiente para garantir que os números não se repetirão (pois estou sempre aumentando o valor, em nenhum momento ele vai voltar para um valor anterior), o que torna desnecessária a verificação que vc faz.

Portanto, daria para fazer assim:

from math import sqrt

def eh_composto(num):
    # nem vou verificar números menores que 5, pois já vimos que não se encaixam na forma 6x - 1
    if num % 2 == 0: # se for par, é composto
        return True
    # aqui eu sei que o número é ímpar
    # só testo se é divisível por números ímpares
    for i in range(3, int(sqrt(num)) + 1, 2):
        if num % i == 0:
            return True
    return False

def gera_compostos(limite, imprimir_lista=False):
    """Gera uma lista com os ‘limite’ primeiros números compostos únicos."""
    compostos = []
    n = 5 # começa do 5 (valor de '6x - 1' quando x=1)
    while len(compostos) < limite:
        if eh_composto(n):
            compostos.append(n)
            if imprimir_lista:
                print(f'Número composto único encontrado: {n}')
        n += 6 # soma 6 para encontrar o próximo número na forma 6x - 1
    return compostos

compostos = gera_compostos(10)
# faz o que quiser com a lista (imprime, etc)
for n in compostos:
    print(n)

Resultado:

35
65
77
95
119
125
143
155
161
185

Repare que ficou diferente porque o seu código pulou alguns, como o 77 (não é primo, pois é igual a 7 * 11), o 119 (7 * 17), o 143 (11 * 13) e o 161 (23 * 7).

Que eu saiba, número composto é todo número que pode ser escrito na forma de produto de números primos.

Concordo, o colega @rafaellvb precisa aprender a expôr suas ideias/dúvidas com clareza.

o raciocínio meu ficou comprometido depois que eu adoeci kkk, serio, ! . sabia que eu já passei no concurso dos Sargentos do Exercito, antigamente, e fechei a prova de matemática, só faltou a prova de exercício físico, ai adoeci. mas as vezes acerto no raciocínio, por isso tento. falando sobre outra coisa, já existe uma formula, para colocar (relaciona ) um único numero para cada permutações de elementos diferente, na matematica ? eu tenho uma. exemplo de permutações= 12345 13425 15324 @hugokotsubo @davidbuzatto @staroski sobre essa formula que eu postei nesse tópico .foi uma uma tentativa de gerar outra formula ,que esta errado, por essa= 6*(x*(6*y+1)-y)-1 ela da muitas repetições de números composto. obrigado pela paciência, vcs são muito legais.

Sinceramente, agora piorou…

Se vc quer números na forma 6x - 1, basta fazer o que eu fiz acima: comece do 5 (valor da expressão quando x é 1) e vá somando 6.

Dessa forma não tem repetição, já que o valor sempre aumenta e nunca irá repetir nenhum número.

Não entendi o que essas permutações tem a ver com o título do tópico. Não entendi nem como ou o que vc tentou fazer, e muito menos pra que essa complicação toda.

Enfim, sugiro que volte alguns passos e responda de forma objetiva: qual é o problema que vc está tentando resolver?

Não é “como”, e sim “o que”. Ou seja, esqueça essas fórmulas malucas e diga qual a regra - são realmente os números na forma 6x - 1 que não são primos? Tem algum outro formato ou propriedade que os números devem ter? (Diga qual é, não diga qual fórmula vc acha que deveria ser, porque já vimos que fica mais confuso quando vc foca na fórmula).

Qual deveria ser o resultado (lista dos 20 primeiros números, por exemplo)? Etc etc etc…

estava tentando compreender propriedades de números compostos, e estava tentando criar uma formula que gere um subconjunto sem repetição desses números, (números na forma (6x-1)),por exemplo. Mas vou pesquisar outras ideias por enquanto. deixar um pouco de lado. não consegui. obrigado, valeu @hugokotsubo .