hecha en Borland C++ Builder 6. Es una pavada, pero la comparto con ustedes.
Es para averiguar si un numero (de hasta 15 dígitos (tipo double) es primo o no)
Se aceptan críticas (no me hablen de la portabilidad, gracias)
1 TForm que contiene
(1 TEdit +2 TButtons)
Source:
Código: Seleccionar todo
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <cmath>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
bool EsPrimo(double);
bool EsImpar(double);
TFesp *Fesp;
//---------------------------------------------------------------------------
__fastcall TFesp::TFesp(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFesp::BsalClick(TObject *Sender)
{
exit (1);
}
//---------------------------------------------------------------------------
void __fastcall TFesp::BespClick(TObject *Sender)
{
double ingreso;
AnsiString salida;
ingreso= (Eent->Text).ToDouble();
if (ingreso==0)
ShowMessage("No Es Primo !!");
else
{
if (EsPrimo(ingreso))
ShowMessage("Es Primo !!");
else
ShowMessage("No es Primo !!");
}
}
//---------------------------------------------------------------------------
bool EsPrimo(double ingreso)
{
double medio;
int resto;
double inicio=2;
bool sip=true;
if (EsImpar(ingreso))
medio=(ingreso-1)/2;
else
medio=ingreso/2;
while ((inicio<=medio) && (sip==true))
{
resto = std::fmod(ingreso,inicio);
if (resto==0)
sip=false;
else
inicio+=1;
}
return sip;
}
bool EsImpar(double numerito)
{
int resto = std::fmod( numerito, 2);
if (resto==1)
return true;
else
return false;
}
void __fastcall TFesp::EentKeyPress(TObject *Sender, char &Key)
{
if (!((Key >= '0' && Key <= '9') || Key == '\b'))
Key = 0;
}
//---------------------------------------------------------------------------
[Enlace externo eliminado para invitados]