Ir ao conteúdo
  • Cadastre-se

rand() e numeros primos


Raphael Celline

Posts recomendados

Oi pessoal,

Eu estou com uma duvida.

Estou tentando gerar um vetor com 10 numeros aleatorios. Bem, até ai sem problema, mas o exercicio pede que esses 10 numeros tem que ser primos. Dai deu o nó na minha cabeça ushsuhsu

bem, basicamente eu estou usando a funçao rand() assim:

...

srand(time(NULL));

while(i<10)

{

vet = rand() % (\* Tentando acha uma funçao*\);

printf("%d ", vet);

i++;

}

...

Como podem ver estou tentando achar uma logica para por no limite da variaçao dos numeros gerados.

Gostaria saber se alguem pode me dar algumas dicas de como fazer isso.

Sei que numeros primos sao divisiveis por 1 e por ele mesmo. Mas nao estou sabendo tacar essas informaçoes em formulas.

Link para o comentário
Compartilhar em outros sites

Pesquisei sobre o que você me falou, achei o significado e tudo sobre o n-ésimo. Mas nao entendi como aplicar nessas circustancias.

Mas foi de ajuda porque achei varias outras coisas falando de numeros primos. E descobri que ainda nao tem uma funçao que faça aparecer numeros aleatorios e primos ao mesmo tempo. Fiz uma gambiarra então aqui:

Fiz o programa fazer um numero aleatorio

Depois o programa ve se esse numero é primo

Caso nao ele volta ali pra cima e faz outro numero

Caso sim ele printa o numero e taca numero++

Quando ele achar 10 numeros primos e tacar numero++ 10 vezes o while fexa e pronto, tenho 10 numeros primos aleatorios

Agora ta dando outro problema. O programa me mostra os numeros primos aleatorios, só que ele mostra 1 ou 2 numeros e para. Ou seja, ele ta entrando em conflito e nao sabe o que fazer.

então estou pedindo ajuda, se alguem entender o porque estou confundindo o coitado do programa depois de ele me mostrar nenhum ou no maximo 2 numeros primos.

Isso porque ele ta programado para me mostrar 10.

#include <stdio.h>

#define MAX 10

#define LIM 999

main ()

{

int vet[MAX],primos[MAX];

int dividido=0;

int i,j,numero;

srand(time(NULL));

printf("Oi, testando \n");

while(numero!=10){

for (i=0;i<LIM;i++){

vet = rand() %100;

for (j=1;j<=vet;j++){

if (vet % j == 0){

dividido++;

}

}

if (dividido == 2){

dividido = 0;

printf("%d ,", vet);

}}}

system("pause");

}

Link para o comentário
Compartilhar em outros sites

Resolvido o problema :

/**

Exercicio.

Montar um programa que gera 10 numeros aleatorios primos acima de 100, e depois os emprime.

**/

#include <stdio.h>

#define MAX 100 // Valor MAXimo(MAX), tamanho maximo do rand() e tamanho maximo do vetor

#define MIN 100 // valor MINino(VAM) do rand()

#define QNP 10 // Quantidade numeros primos

main(){

int vet[MAX],count[MAX];

int i,j,aux,aux2;

srand(time(NULL));

for (i=0;i<MAX;i++)

vet = MIN+(rand() % MAX);

for (i=0;i<MAX;i++)

count=0;

aux=0;

for (i=0;i<MAX;i++){

aux = vet;

for (j=1;j<=aux;j++){

if (aux % j ==0)

count++;

}}

i = -1;

aux2 = 0;

while (aux2 != QNP){

i++;

if (count==2){

aux2++;

printf("%.3d ", vet);

}}

printf("\n\n\nnumeros primos %d \n", aux2);

system("pause");

}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...