Problema em linguagem C
2 participantes
Página 1 de 1
Problema em linguagem C
Meu professor deu esse problema em uma lista de exercicicios de do while,while e for e eu não consegui resolve-lo, gostaria que me ajudassem.
Escreva um programa que, dados dois números naturais N1 e N2, imprima todos os números primos existentes entre ambos.
Escreva um programa que, dados dois números naturais N1 e N2, imprima todos os números primos existentes entre ambos.
marcelomendes1- Recebeu o sabre de luz
- Mensagens : 137
Data de inscrição : 22/06/2016
Idade : 29
Localização : São Paulo
Re: Problema em linguagem C
- Código:
#include <stdio.h>
int main()
{
//Supondo um intervalo fechado [n1,n2]
int n1,n2;
scanf("%d %d",&n1,&n2);
int i = n1;
while(i != n2+1)
{
int j = 2;
if(i == 2)
printf("2 ");
else if(i != 1)
{
while(j*j <= i) //******//
{
if(i % j == 0)
{
j = -1; // Logo, NÂO PRIMO
break; //quebrando o while
}
j++;
}
if(j != -1)
printf("%d ",i);
}
i++;
}
return 0;
}
Na linha com vários asteriscos há também a possibilidade de parar somente quando j < i, while(j < i). Contudo, da forma que eu fiz o tempo de execução deixa do laço deixa de ser N-1 e passa a ser sqrt(N);
Lembrando, se N é um número composto (Não primo) então esse possui algum divisor d <= sqrt(N)!
Ex.: N = 9 = 3 * 3, possui um divisor d <= sqrt(9) <= 3, d pertence a {1,2,3}
Ex.: N = 7, não é possível fatorá-lo em com mais de um número primo, logo, não existe um divisor d <= sqrt(7)
Ex.: N = 3, Idem
Ex.: N = 10 = 2 * 5 .:. Existe um d <= sqrt(10), d pertence a {1,2,3}
Melkor256- Iniciante
- Mensagens : 6
Data de inscrição : 19/08/2017
Idade : 26
Localização : Recife
Re: Problema em linguagem C
Não entendi muito bem seu programa kkkkk, não deveria ser unsigned int por causa que são numeros naturais? Além disso, não devia ter um printf falando pra digitar os dois numeros naturais? Eu coloquei seu programa no codeblocks e não deu um resultado :/Melkor256 escreveu:
- Código:
#include <stdio.h>
int main()
{
//Supondo um intervalo fechado [n1,n2]
int n1,n2;
scanf("%d %d",&n1,&n2);
int i = n1;
while(i != n2+1)
{
int j = 2;
if(i == 2)
printf("2 ");
else if(i != 1)
{
while(j*j <= i) //******//
{
if(i % j == 0)
{
j = -1; // Logo, NÂO PRIMO
break; //quebrando o while
}
j++;
}
if(j != -1)
printf("%d ",i);
}
i++;
}
return 0;
}
Na linha com vários asteriscos há também a possibilidade de parar somente quando j < i, while(j < i). Contudo, da forma que eu fiz o tempo de execução deixa do laço deixa de ser N-1 e passa a ser sqrt(N);
Lembrando, se N é um número composto (Não primo) então esse possui algum divisor d <= sqrt(N)!
Ex.: N = 9 = 3 * 3, possui um divisor d <= sqrt(9) <= 3, d pertence a {1,2,3}
Ex.: N = 7, não é possível fatorá-lo em com mais de um número primo, logo, não existe um divisor d <= sqrt(7)
Ex.: N = 3, Idem
Ex.: N = 10 = 2 * 5 .:. Existe um d <= sqrt(10), d pertence a {1,2,3}
marcelomendes1- Recebeu o sabre de luz
- Mensagens : 137
Data de inscrição : 22/06/2016
Idade : 29
Localização : São Paulo
Tópicos semelhantes
» Linguagem formal X Linguagem informal
» linguagem
» linguagem de computação
» RECURSOS DE LINGUAGEM
» Figura de linguagem
» linguagem
» linguagem de computação
» RECURSOS DE LINGUAGEM
» Figura de linguagem
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|