Quiero que me muestre de
menor a mayor y de mayor a menor los 20 primeros nº primos.
Metodo 1: hasta n-1
<inicio>
primo[20]
contador=0
esprimo=”si” //si: indica que el numero es primo.
listadeprimos=1
numeroacomprobar=1
numero=0
mientras contador<20
primo[contador]=0
contador++
finmientras
primo[0]=2
contador=0
numeroacomprobar=2;
// comprobar si ya he llegado a 20 numeros primos.
mientras (contador<20)
numeroacomprobar++
esprimo=”si”
numero=2
// repetir hasta N-1
mientras (numero<(numeroacomprobar-1))
si numeroacomprobar%numero=0
//no es un numero primo, salimos del este bucle:
numero=numeroacomprobar
esprimo=”NO”;
finsi
numero++
finmientras
si esprimo=”si”
contador++
primo[contador]=numeroacomprobar
listadeprimos++
finsi
finmientras
// ordenar el listado
contador=20
mientras (contador>-1)
escribe primo[contador]
contador--
finmientras
<fin>
Ahora
lo hacemos en C:
#include <stdio.h>
int main(int argc, char **argv)
{
int primo[20];
int contador=1;
int esprimo=1; //1 indica que es "S" primo
int listadeprimos=1;
int numeroacompra=1;
int numeroacomprobar=1;
int numero=0;
while (contador<20){
primo[contador]=0;
contador++;
}
primo[0]=2;
contador=0;
numeroacomprobar=2;
while (contador<20){
numeroacomprobar++;
esprimo=1;
numero=2;
while (numero<(numeroacomprobar-1)){
if (numeroacomprobar%numero==0) {
// no es un numero primo,salimos de ese bucle
numero=numeroacomprobar;
esprimo=0;
}
numero++;
}
if (esprimo==1) {
contador++;
primo[contador]=numeroacomprobar;
listadeprimos++;
}
}
//ordenar listado (de mayor a menor)
contador=0;
while (contador<20) {
printf("%d \n",primo[contador]);
contador++;
}
printf("----------------\n");
contador<20;
while (contador>-1) {
printf("%d \n",primo[contador]);
contador--;
}
return 0;
}
Metodo 2: creando una tabla de numeros primos que vaya incorporando los nº primos que encuentre
<inicio>
primo[20]
contador=0
esprimo=1 //1: indica que el numero es primo.
listadeprimos=1
numeroacomprobar=1
numero=0
mientras contador<20
primo[contador]=0
contador++
finmientras
primo[0]=2
contador=0
numeroacomprobar=1;
// comprobar si ya he llegado a 20 numeros primos.
mientras (contador<20)
numeroacomprobar++
esprimo=1
numero=0
// comparar una lista de numero
primos que va añadiendo un numero cada vez que descubra que sea
primo.
mientras (numero<listadeprimos))
si (numeroacomprobar%primo[numero]=0)
/ /no es un numero primo, salimos del este bucle:
numero=listadeprimos
esprimo=0;
finsi
numero++
finmientras
si esprimo=1
contador++
listadeprimos++
primo[contador]=numeroacomprobar
numero=listadeprimos
finsi
finmientras
// ordenar el listado
contador=20
mientras (contador>-1)
escribe primo[contador]
contador--
finmientras
<fin>
Ahora lo pasamos a C:
#include <stdio.h>
int main(int argc, char **argv)
{
int primo[20];
int contador=0;
int esprimo=1; //1 indica que es "S" primo
int listadeprimos=1;
int numeroacomprobar=1;
int numero=0;
while (contador<20) {
primo[contador]=0;
contador++;
}
primo[0]=2;
contador=0;
numeroacomprobar=1;
while (contador<20) {
numeroacomprobar++;
esprimo=1;
numero=0;
while (numero<listadeprimos) {
// no es primo y salimos del blucle
if (numeroacomprobar%primo[numero]==0) {
//no es un numero primo salimos de este bucle
numero=listadeprimos;
esprimo=0;
}
numero++;
}
if (esprimo==1) {
listadeprimos++;
contador++;
primo[listadeprimos-1]=numeroacomprobar;
numero=listadeprimos;
}
}
//ordenar listado (de mayor a menor)
contador=0;
while (contador<20) {
printf("%d \n",primo[contador]);
contador++;
}
printf("----------------\n");
contador=19;
while (contador>-1) {
printf("%d \n",primo[contador]);
contador--;
}
return 0;
}
No hay comentarios:
Publicar un comentario