Escribir todos los numero multiplos de B que estan en A

Iniciado por luisgonzalo4, 28 Octubre 2014, 00:59 AM

0 Miembros y 1 Visitante están viendo este tema.

luisgonzalo4

Hola comunidad del el hacker.net !

en la universidad me plantearon el siguiente ejercicio

Escribir todos los números múltiplos de B que están en A

A=(a,b)

a= El numero mas grande para menor que 1000 y que es primo
b=el numero mas pequeño pero mayor que 2000, que es primo gemelo

los eh estado haciendo pero no estoy seguro si es de la forma en que lo hice


#include <stdio.h>
#include <stdlib.h>
int main(){
      int i,n,n2;
      n=0;
      printf("introduzca el numero: ");
      scanf("%d",&n);
     
      if(n<2027){
         for(i = 1; n2<2027; i++){
               n2=n*i;
                      if(n2<=2027 && n2>=997)
                                 printf("%d ",n2);
                                 }
                                 }
                 else if(n>2027){
                 printf("No hay multiplo en el intervalo deseado");}
       printf("\n");
       system("pause");
       }



El profesor no me dio a entender muy bien a lo que se referia con lo de a= El numero mas grande para menor que 1000 y que es primo
b=el numero mas pequeño pero mayor que 2000, que es primo gemelo.

La verdad me tiene confundido esta parte: en Internet y me sale que el primo mas grande pero menor a 1000 es 997 y el primo gemelo mas pequeño pero mayor a 2000 es 2027 pues es gemelo con 2029.



leosansan

#1
Creo que lo has interpretado de forma adecuada, sólo un par de observaciones:

* Como main es una función de tipo int requiere de un return.

* En:

Código (cpp) [Seleccionar]
if(n2<=2027 && n2>=997)

te sobra lo de n2<=2027 ya que es una condición del for.

* Es más, el for,  si n = 123 en lugar de empezarlo por 1 lo empezaría por 9 porque fíjate que si n es 123 estarías probando:
123 * 1 = 123 < 997==> no se imprime.
123 * 2 = 246 < 997==> no se imprime.
........................................................
123 * 8 = 984 < 997==> no se imprime.
123 * 9 = 1107 > 997==> SI se imprime.

Y ese "9" es ni más ni menos que: 1 + 997 / n, en este ejemplo más concreto con n= 123 sería 1 + 997 / 123, con lo que ahorrarías cálculos innecesarios y además te sobraría el if anterior.

* De paso te puedes ahorrar la variable n2.

* Procura indentar el código de forma racional.  ;)

Yo te propondría:

Código (cpp) [Seleccionar]
#include <stdio.h>

int main ( void ) {
 int i , n ;
 printf ("introduzca el numero: " ) ;
 scanf ( "%d" , &n  );
 if( n < 2027 ) {
   for ( i = 1 + 997 / n ; i * n < 2027 ; i++ )
     printf ( "%d " , i * n ) ;
 }
 else
   puts ( "No hay multiplo en el intervalo deseado" ) ;
 putchar ( '\n' ) ;
 return 0 ;
}


¡¡¡¡ Saluditos! ..... !!!!