Ir ao conteúdo
  • Cadastre-se

jaireugenio

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

posts postados por jaireugenio

  1. Em 14/04/2024 às 15:23, devair1010 disse:

    @jaireugenio   para esse código não repetir os mesmos números você pode colocar uma variável que armazena os números encontrados e assim evitar imprimi los novamente ,  porém não sei se esses números encontrados pelo programa são realmente números amigos ,  e com essa modificação seu código ficou assim  :

    #define     _WIN32_WINNT 0x600
    #define     _h GetStdHandle(STD_OUTPUT_HANDLE)
    #include    <stdio.h>
    #include    <conio.h>
    #include    <iso646.h>
    #include    <stdlib.h>
    #include    <string.h>
    #include    <windows.h>
    #include    <math.h>
    #include    <time.h>
    #include    <stdbool.h>
    #include    <locale.h>
    char cor( int, int );
    int main(int argc, char* argv[] )
    {
        srand(time(NULL));
        int letra,fundo;
        CONSOLE_SCREEN_BUFFER_INFO _c                            ;
        if( GetConsoleScreenBufferInfo     ( _h, & _c )          )
        {
            letra = (   _c.wAttributes & 0xFF )            & 0x0F;
            fundo = ( ( _c.wAttributes & 0xFF ) >> 4    )  & 0x0F;
        }
        cor(12,14);
        setlocale(LC_ALL,"");
        ///-------------------------------------------------------
    
        int n, divisor, r, soma1, soma2, y, x;
        int flag = 0;
        scanf("%d", &x);
        if(x>3)
        {
            y=x*1500;
        }
        else
          y=x*1000;
        for (n = 2; n <= y; n++)
        {
            soma1 = 1;
            for (divisor = 2; divisor <= n/2; divisor++)
            {
                if (n % divisor == 0) soma1+=divisor; //calcula a soma dos divisores
            }
            soma2 = 1;
            if (soma1 != n)
              for (divisor = 2; divisor <= soma1/2; divisor++)
              {
                if (soma1 % divisor == 0) soma2+=divisor; //calcula a soma dos divisores
              }
            if (soma2 == n && flag != n) //verificar se a soma dos divisores eh igual ao numero
            {
              printf("  (%7d,%7d)  \n",n, soma1);
              flag = soma1; /// armazena para q não repita esses mesmos num's
            }
    
        }
    
        for(int f=0; f<10; f++) Beep(rand()%3000,rand()%150+150);
    
        ///-------------------------------------------------------
        cor(letra,fundo);
        printf("\n\n\n");
        return   0;
    }
    char cor( int L, int F )
    {
        SetConsoleTextAttribute( _h, L +( F << 4 ) );
    }

     

    calma lá cara, eu programa a pouco mais de uma semana as únicas bibliotecas q sei são stdio e math, então não entendi  a maior parte do seu código resolvi essa questão desse jeito

     

    #include <stdio.h>

    int main ()

    {

    int n, divisor, r, soma1, soma2, y, x;

    scanf("%d", &x);

    if(x>3){y=x*1500;}

    else y=x*1000;

    for (n = 2; n <= y; n++)

    {

    soma1 = 1;

    for (divisor = 2; divisor <= n/2; divisor++)

    {

    if (n % divisor == 0) soma1+=divisor; //calcula a soma dos divisores

    }

    soma2 = 1;

    if (soma1 != n) for (divisor = 2; divisor <= soma1/2; divisor++)

    {

    if (soma1 % divisor == 0) soma2+=divisor; //calcula a soma dos divisores

    }

    if (soma2 == n && n < soma1) //verificar se a soma dos divisores eh igual ao numero

    {

    printf("(%d,%d)\n",n, soma1);

    }

    }

    return 0;

    }

     

    teria vários problemas  nesse código se fosse minha intenção procura tds os números amigos mas como eu tenho q acha até no máximo 9 pares, esse código dá conta do recado.

    • Obrigado 2
  2. @devair1010 alguma dica para resolver esse problema? de td forma q mexo o código para de mostra até o primeiro par.

     

     

     

    olhei esse código com um cara que estava tendo uma questão parecida com a minha e dei uma adaptada, agora o único problema e q ele ficar repetindo os pares

    #include <stdio.h>
    int main ()
    {
        int n, divisor, r, soma1, soma2, y, x;
        scanf("%d", &x);
        if(x>3){y=x*1500;}
        else y=x*1000;
        for (n = 2; n <= y; n++)
        {        
            soma1 = 1;
            for (divisor = 2; divisor <= n/2; divisor++)
            {            
                if (n % divisor == 0) soma1+=divisor; //calcula a soma dos divisores
            }
            soma2 = 1;
            if (soma1 != n) for (divisor = 2; divisor <= soma1/2; divisor++)
            {            
                if (soma1 % divisor == 0) soma2+=divisor; //calcula a soma dos divisores
            }
            if (soma2 == n) //verificar se a soma dos divisores eh igual ao numero
            {
                printf("(%d,%d)\n",n, soma1);
            }
            
        }
        return 0;
    }

    • Obrigado 1
  3. boa tarde.

    meu professor passou uma atividade onde tenho que encontra os pares de números amigos, mas meu código ficar repetindo o primeiro par e nunca procura os outros. 

    #include<stdio.h>
    #include<stdlib.h>
     
    int amigo(int n1,int n2){
        int div1=1,div2=1,soma1=0,soma2=0;
        while(n1>=div1*2){
            if(n1%div1==0){
                soma1=soma1+div1;
            }
            div1++;
        }
        while(n2>=div2*2){
            if(n2%div2==0){
                soma2=soma2+div2;
            }
            div2++;
        }
        if(soma1==n2 && soma2==n1){ //neste caso sao amigos
            return 1;
        }
        return 0;
    }
    int main(){
       
       int x, y,f=220,k, num1,num2;
       scanf("%d", &x);
       for(y=1; y<=x; y++){ //repetir a quant de amigos a procurar
           num1=f;
           num2=num1;
           while(num1){
               while(num2){
                    //printf("%d %d\n",num1, num2);
                    num2++;
                    if(amigo(num1,num2)==1){ 
                        f=num1;k=num2;
                        printf("(%d,%d)",num1,num2);
                        num1=0;num2=0;
                    }
               }
               num1++;
           }
           
           
           
       }
    }

    main (1).zip

    • Obrigado 1

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!