Ir ao conteúdo
  • Cadastre-se

Exercício Diversão dos Alunos


Posts recomendados

Boa noite!

 

Comecei a aprender a programar faz uma semana. Meu professor passou um exercício em C bem difícil para alguém que não sabe quase nada, porém só consegui o básico do básico.

Alguém pode me ajudar?

 

Exercício:

 

Guilherme escolhe um número N e Rogério escolhe um número M.

Guilherme e Rogério devem então achar dois números primos P1 e P2, de tal forma que eles sejam o mais próximo possível do que numero N e M, respectivamente.

Além disso P1 deve ser menor ou igual a N e P2 deve ser menor ou igual a M.

A resposta final do desafio é encontrar a multiplicação de P1 e P2. Quem achar a resposta primeiro é o vencedor.

 

O código que fiz até agora é este:

#include<stdio.h>
int main(){
int n, m;
    printf("Entre com 1 numero menor ou igual a 2 e 1 numero menor ou igual a 1000: ");
    scanf("%d %d", &n, &n);   
    if (n = 1)

    return 0;
}

 

obs: Um número primo é um número natural maior que um, que só é divisível por um e por ele mesmo. Por exemplo, 2, 3, 5, 7 são primos. O número 6 não éprimo, pois é divisível por 2 e por 3.

 

Desde já, agradeço a ajuda.

 

adicionado 42 minutos depois

Corrigindo o código

#include<stdio.h>
int main(){
int n, m;
    printf("Entre com 1 numero menor ou igual a 2 e 1 numero menor ou igual a 1000: ");
    scanf("%d %d", &n, &m);   
    if (n = 1)

    return 0;
}
 
adicionado 46 minutos depois

Atualizando o código que consegui até agora, com auxílio de sites.

#include <stdio.h>
int main(){
    int numero1, i, controle=0;
    printf("Entre com 1 numero menor ou igual a 2: ");
    scanf("%d", &numero1);
    /* Se o numero for maior que 1, verificamos se e primo */
    if (numero1 <= 2)
    {
        /*
        *
        * Aqui iremos dividir o numero informado
        * por todos os numeros que estão entre ele e 1.
        * No final, se ele tiver sido divisivel apenas por
        * 2 numeros sem sobrar resto, então este e um numero primo.
        *
        */
        for (i = 1; i <= numero1; i++)
        {
            /*
            * Se for divisivel por um numero sem sobrar resto,
            * incrementamos a variavel controle, que conta quantos
            * divisores o numero tem.
            */
            if (numero1 % i == 0) controle++;
        }

        /*
        * Apos o loop, verificamos quantos divisores o numero informado possui.
        * Se for apenas dois, ele e primo, caso contrario, nao.
        */
        if (controle == 2)
        {
           printf("O numero %d e um numero primo!\n", numero1);
        }
        else
        {
            printf("O numero %d nao e um numero primo!\n", numero1);
        }
    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Pelo que eu entendi dessa questão, os números que tu vai ler no scanf são dois números quaisquer então primeiramente tu faria a entrada de dados:

int N, M, i, j, divisores=0, p1, p2;

printf("digite o primeiro número:");

Scanf("%d", &N);

printf("digite o segundo número:");

Scanf("%d", &M);

Depois disso tu vai fazer uma repetição pra procurar o número primo mais próximo, como ele quer menor ou igual ao N e ao M tu vai usar um for por exemplo com a variável de contagem decrescente começando em M ou N e dentro desse for tu vai usar um outro for que vai servir pra tu procurar quantos divisores ele tem e dps que esse segundo for terminar ainda dentro do primeiro for teria um If testando se o número de divisores é igual a dois, caso sim o p1 receberia o i e seria usado um comando break para interromper o for, dessa forma:

 

for(i=M;i>1;i--) //for com i decrescente
{
     for(j=1 ; j<i ; j++)
     {
           If(i%j==0)
           {
                divisores++;
           }
      }

      If(divisores==2)
      {
            p1=i;
            Break;
       }
}

A mesma coisa séria feita com o N.

 

Link para o comentário
Compartilhar em outros sites

enunciado completo....

 

 

Juilherme e Jogério, gostam muito de jogos matemáticos. Juilherme acabou de criar mais um jogo matemático para eles se divertirem enquanto assistem essa competição online. O jogo consiste nos seguintes passos: i. Juilherme escolhe um número N e Jogério escolhe um número M. ii. Juilherme e Jogério devem então achar dois números primos P1 e P2, de tal forma que eles sejam o mais próximo possível do que numero N e M, respectivamente. Além disso P1 deve ser menor ou igual a N e P2 deve ser menor ou igual a M. iii. A resposta final do desafio é encontrar a multiplicação de P1 e P2. Quem achar a resposta primeiro é o vencedor. Como eles irão tentar achar a resposta o mais rápido possível, algumas vezes chegando a resultados incorretos, eles precisam de um programa que entregue a resposta final do jogo, para que possa ser comparada com a resposta encontrada por eles. Usando as informações do jogo, faça um programa que dado os números N e M imprima o resultado final. Entrada A entrada do programa consiste de apenas uma linha com N e M (2 <= N, M <= 1000). Saída A saída do seu programa deve conter apenas uma linha informando a resposta final do jogo.

Link para o comentário
Compartilhar em outros sites

6 horas atrás, Vinícius Nóbrega disse:

O programa até que compilou, porém não imprime nada no dos. Até porque não tem nenhum printf, correto?

 

O que eu poderia fazer?

 

Uma obs: A entrada do programa consiste de apenas uma linha com N e M (2 <= N, M <= 1000).

dps é só colocar um printf pra mostrar a multiplicação do p1*p2

Link para o comentário
Compartilhar em outros sites

O meu código até agora está assim, mas ainda não está compilando.

Como faço para ele ter essas condições também? (2 <= N, M <= 1000).

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

int main()
{
    int N, M, i, j, divisores=0, p1, p2;

    printf("Entre com 1 numero menor ou igual a 2: ");
    scanf("%d", &N);

    for(i=N;i>1;i--) //for com i decrescente
{
     for(j=1 ; j<i ; j++);
     {
           if(i%j==0);
           {
                divisores++;
           }
      }
      if(divisores==2);
      {
            p1=i;
            break;
       }
}
    printf("Entre com 1 numero menor ou igual a 1000: ");
    scanf("%d", &M);

    for(i=M;i>1;i--) //for com i decrescente
{
     for(j=1 ; j<i ; j++);
     {
           if(i%j==0);
           {
                divisores++;
           }
      }
      if(divisores==2);
      {
            p2=i;
            break;
       }
}
    {
     printf("A divisao dos dois numeros primos encontrados e:", p1 * p2);
    }
}

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
Visitante
Este tópico está impedido de receber novas respostas.

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!