ciclos, dos ejemplos (números primos, número perfecto)

/* primos.c, cantidad de primos menores que n
   (primo: solo divisible por 1 y n; como 2, 3, 5, 7, 11 , 13, 17)
*/

#include <stdio.h>
#include <stdlib.h>

int primos(int n);
int primo(int n);

int main() {
   int lim, can; // limite, cantidad de primos

   printf(“Obtiene cantidad de primos menores que n.\n\n”);

   printf(“Limite (mayor que uno): “);
   scanf(“%d”, &lim);

   can = primos(lim);

   printf(“\nCantidad de primos: %d\n\n”, can);
 
   system(“pause”);  
   return 0;
}

int primos(int n) {
   /* obtiene los primos menores que n */
   int cp = 1; // cantidad de primos
   int c; // contador de 3 a n-1

      for (c = 3; c < n; c++)
         if (primo(c)) cp++;
 
   return cp;
}

int primo(int n) {
   /* determina si n es primo (mayor que 2) */
   int sp = 1; // si n es primo (1 = si, 0 = no)
   int d; // divisor (posible factor)

      for (d = 2; sp && d <= n/2; d++)
         if (n%d == 0) sp = 0;

   return sp;
}

* * * * * * *

/* perfecto.c, determina si un numero es perfecto
   (igual a la suma de sus factores propios, como 6 = 1 + 2 + 3; 28 = 1 + 2 + 4 + 7 +14)
*/

#include <stdio.h>
#include <stdlib.h>

int perfecto(int n);

int main() {
   int num, siPer; // numero, si perfecto

   printf(“Determina si un entero positivo es perfecto.\n\n”);

   printf(“Numero: “);
   scanf(“%d”, &num);

   siPer = perfecto(num);

      if (siPer == 1)
           printf(“\n%d es perfecto.\n\n”, num);
         else
           printf(“\n%d NO es perfecto.\n\n”, num);

   system(“pause”);
   return 0;
}

* * * * * * *

Nota:

     Pongan el énfasis en las funciones, el código reciclable.

ecabrera.

About these ads

Publicado el noviembre 29, 2007 en código. Añade a favoritos el enlace permanente. 13 comentarios.

  1. SOY UN OBRERO Y ENCONTRE UN PARADIGMA PRIMO ESTE ACONTINUACION ES UN NUMERO PRIMO;
    858433
    2 -1 Y YO ENCONTRE ESTE NO SE SI ES PRIMO ;

    1048576
    2 +1 LO UNICO QUE SE ES QUE TERMINA EN “7” P`RO FABOR MANDEME RESPUESTA Y MI CORREO ES orion_ajedrez1@hotmail.com

    mandemen tambien los primeros 1000 numeros primos.

  2. ENCONTRE OTRO NUMERO Y ES
    ( 64 )
    2
    2 +1 OJO QUE EL NUMERO ES 2 ELEVADO “(” 2
    ELEVADO A LA 64 CIERRE “)” MAS 1
    LO UNICO QUE SE ES QUE YO ENCONTRE UNA FORMA DE ENCONTRARLOS PERO LO QUE SE ES QUE TERMINAN
    EN “7” NO SE SI SON PRIMOS.

  3. VIVO EN EL BANCO (MAGDALENA,COLOMBIA)

  4. por favor necesito q me manden todos lo n. perfectos q conascan

    gracias

  5. Los primeros 5 números perfectos son: 1, 6, 28, 496, 8128.

    El siguiente programa obtiene los primeros cp números perfectos.

    Los primeros 5 los obtiene enseguida, pero los otros tardan mucho más tiempo. Si tienes paciencia…

    // perfectos.c, genera numeros perfectos

    #include
    #include
    #include

    int perfecto(double n) {
    int sp = 0, sm = 1, d = 2;
    while (d <= n/2) {
    if (n == trunc(n/d)*d) sm += d;
    d += 1;
    }
    if (sm == n) sp = 1;
    return sp;
    }

    int main() {
    int cp = 5, k = 0;
    double num = 1;
    while (k < cp) {
    if(perfecto(num)) {
    printf(“%.0f “, num);
    k++;
    }
    num = num + 1;
    }
    printf(“\n\n”);
    system(“pause”);
    return 0;
    }

    Nota: Lo puedes correr usando Dev-C++, el cual puedes bajar gratis de http://www.bloodshed.net.

  6. no eres ree culero pinche puto hijo de la chingada no le entiendo ni madres sobres rosario

  7. I forgive you, el teras.

  8. mepodrias decir que sigloes1596,1601,1765,1906 porfavor dame la contestacion ya lanecesito

    • El siglo 16 comienza en el año1501, por tanto, 1596 corresponde al siglo 16.

      Similarmente:

      1601 –> 17 1765 –> 18 1906 –> 20   En números romanos serían XVI, XVII, XVIII, XX.

      Gracia y paz.

      ecabrera.  Mejor es el que tarda en airarse que el fuerte, el que domina su espíritu que el conquistador de una ciudad. (Proverbios 16:32)  

  9. wasithaa pa qee vay al colegioo vozz

    • ???

      Si no te gustó, puedes aportar algo mejor: Es un sitio público.

      Mira los tutoriales de lenguaje C, es una entrada reciente, a ver si también te valen hongo…

      Aunque mi experiencia en estos casos es que algunos andan por ahí criticando mucho y aportando poco.

      Ojalá no sea tu caso.

      Muestra tus musculatura algorítmica, Hulk!

      ecabrera

      Enviado desde mi móvil BlackBerry Orange.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 28 seguidores

%d personas les gusta esto: