Buscar

numeros primos 4

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:;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais