Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
#include<stdio.h> #include<stdlib.h> /*=============================================================================* | Nome.........: Calculador de numeros primos | | Desenvolvedor: Thiago C. Serrilho - webserrilho@gmail.com | | Versão.......: 1.4 | | Data.........: 12/05/2008 | | Descrição: Este programa serve para verificar um ou vários numeros e | | detectar se o mesmo é primo ou não. Verifica quantos divisores | | um determinado número não primo possu e os exibe na tela. | | Observação: O programa só foi textado no Windows XP e talvez poderá | | funcionar de maneira incorreta em outros sistemas operacionais. | | | | | Dedicado a: Sheyla Rodrigues | *=============================================================================*/ main() { int n_ini, n_fim, n, i, d, cont_div=0, opc; /* *==================================================================* | TABELA DE LEGENDA DAS VARIÁVEIS | *==================================================================* | n_ini - único número ou primeiro numero da faixa de valores | | n_fim - ultimo número da faixa de valores | | n - numero que será verificado | | i - conta quantos numeros já foram verificados | | d - divisor | | cont_div - conta quantos divisores o número possui | | opc - número da opção do menu | *==================================================================* */ do { system("cls"); printf("*=============================================================================*\n"); printf("| |\n"); printf("| CALCULADOR DE NUMEROS PRIMOS - VERSAO 1.4 |\n"); printf("| Desenvolvido por Thiago Serrilho |\n"); printf("| |\n"); printf("*=============================================================================*\n"); printf("| ESCOLHA UMA DAS OPCOES ABAIXO |\n"); printf("*=============================================================================*\n"); printf("| 1 - Verificar se um numero e primo ou nao |\n"); printf("| 2 - Exibir numeros primos dentro de uma faixa de valores |\n"); printf("| 3 - Exibir numeros nao primos dentro de uma faixa de valores |\n"); printf("| 4 - Exibir divisores para um unico numero nao primo |\n"); printf("| 5 - Exibir divisores de numeros nao primos em uma faixa de valores |\n"); printf("| 6 - Finalizar o programa |\n"); printf("*=============================================================================*\n"); printf("Informe a sua opcao: "); scanf("%d",&opc); system("cls"); //limpa a tela switch(opc) { case 1: //numero primo ou não { do { printf("Informe um numero para saber se ele e primo ou nao: ",n); scanf("%d",&n_ini); n_fim = n_ini; //valor inicial e final recebem o mesmo valor if(n_ini < 0 || n_ini > 1000000000) printf("\nERRO: O numero nao pode ser menor que 0 nem maior que 1000000000.\n\n"); }while(n_ini < 0 || n_ini > 1000000000); break; } case 2 : //numeros primos dentro de uma faixa de valores { do { printf("Informe o numero inicial: "); scanf("%d",&n_ini); printf("Informe o numero final..: "); scanf("%d",&n_fim); if(n_ini > n_fim) printf("ERRO: Numero inicial maior que o numero final.\n"); if(n_ini < 0 || n_ini > 1000000000 || n_fim < 0 || n_fim > 1000000000) printf("ERRO: Os numeros nao podem ser menores que 0 nem maiores que 1000000000.\n"); }while(n_ini > n_fim || n_ini < 0 || n_fim > 1000000000); printf("Numeros primos existentes entre %d e %d:\n",n_ini,n_fim); break; } case 3: // numeros nao primos dentro de uma faixa de valores { do { printf("Informe o numero inicial: "); scanf("%d",&n_ini); printf("Informe o numero final..: "); scanf("%d",&n_fim); if(n_ini > n_fim) printf("ERRO: Numero inicial maior que o numero final.\n"); if(n_ini < 0 || n_ini > 1000000000 || n_fim < 0 || n_fim > 1000000000) printf("ERRO: Os numeros nao podem ser menores que 0 nem maiores que 1000000000.\n"); }while(n_ini > n_fim || n_ini < 0 || n_fim > 1000000000); printf("Numeros nao primos existentes entre %d e %d:\n",n_ini,n_fim); break; } case 4: //exibe divisores de um único numero primo { do { printf("Informe um numero nao primo: "); scanf("%d",&n_ini); n_fim=n_ini; //valor inicial e final recebem o mesmo valor if(n_ini < 0 || n_ini > 1000000000) printf("\nERRO: O numero nao pode ser menor que 0 nem maior que 1000000000.\n\n"); }while(n_ini < 0 || n_ini > 1000000000); break; } case 5: //exibe divisores de numeros não primos em uma faixa de valores { do { printf("Informe o numero inicial: "); scanf("%d",&n_ini); printf("Informe o numero final..: "); scanf("%d",&n_fim); if(n_ini > n_fim) printf("ERRO: Numero inicial maior que o numero final.\n"); if(n_ini < 0 || n_ini > 1000000000 || n_fim < 0 || n_fim > 1000000000) printf("ERRO: Os numeros nao podem ser menores que 0 nem maiores que 1000000000.\n"); }while(n_ini > n_fim || n_ini < 0 || n_fim > 1000000000); break; } case 6 : goto fim; //finaliza o programa } printf("==============================================================================\n\n"); for(i = n_ini; i <= n_fim; i++) // serve para contar quantos numeros serão verificados { n=i; // coloca o valor da variavel i na variavel n for(d = 1; d <= n; d++) // serve para verificar os possiveis divisores { if(n % d == 0) // se (n / d) der resto 0 (zero) então... cont_div++; // conta a quantidade de divisores } //################################################################################## if(n_fim == 1 && opc == 2) printf("Nao existem numeros primos nesta faixa de valores.\n"); if(cont_div < 2 && opc == 1) printf("O numero %d nao e primo.\n",n); if(cont_div < 2 && opc == 3) printf(" %-9d\t",n); if(cont_div == 1 && opc == 4) printf("O numero %d nao primo, seu unico divisor e %d.\n",n,d-1); if(i == 1 && opc == 5) printf("O numero %d nao primo, seu unico divisor e %d.\n",n,d-1); //################################################################################## if(cont_div == 2) // numeros primos { if(opc == 1) printf("O numero %d e primo.\n",n); if(opc == 2) printf(" %-9d\t",n); if(opc == 4) printf("O numero %d e primo, informe outro numero que nao seja primo.\n",n); } //################################################################################## if(cont_div > 2) // numeros não primos { if(opc == 1) printf("O numero %d nao e primo.\n",n); if(opc == 3) printf(" %-9d\t",n); if(opc == 4 || opc == 5) { printf("\n==============================================================================\n"); printf("O numero %d nao e primo. Seus %d divisores sao:\n",n,cont_div); printf("==============================================================================\n"); for(d = 1; d <= n; d++) //serve para imprimir os divisores { if(n%d == 0) printf(" %-9d\t",d); //imprime os divisores } printf("\n==============================================================================\n"); printf("\n");//quebra de linha } } //################################################################################## cont_div=0; //zera o valor do contador de divisores } if(opc <= 0 || opc > 6) printf("ERRO: Opcao invalida!\n"); printf("\n==============================================================================\n"); printf("Pressione \"enter\" para continuar..."); getchar(); getchar(); }while(opc != 6); fim:; }
Compartilhar