Mitt kompilerade program hänger sig :/
När jag kompilerar det här programmet så körs det några gånger, sedan fryser det sig, och tar upp all processorkraft. Det skall leta efter tal, som dels är primtal, dels palindrom, och talet i binärform skall vara ett primtal, och dessutom ett palindrom.
Finns det något enkelt som gör att program får minnesläckor eller något? Det tar inte upp äckligt mycket minne, jag har ingen aning om vad jag har gjort som är fel.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream.h>
#include <math.h>
//using namespace std;
double taltest;
float tal;
float taldiv;
float talsqrt;
double divi;
int apa;
double decimal;
float primecheck( float tal );
int invert( int a );
int homo( int decimal );
double mult;
double bin;
double cp;
int counter;
double platstal;
double thetal;
int runk;
double kolltal;
int bol;
int bintal;
int lekvariabel;
//Här kommer main
int main()
{
kolltal=1;
while (1<2){
//cout << kolltal << endl;
bol=primecheck(kolltal);
if (bol == 1) //Då är det ett primtal
{
cout << "Stage 1 (prim): " << kolltal << endl;
lekvariabel=invert(kolltal);
if (lekvariabel == kolltal){
cout << "Stage 2: " << kolltal << endl;
bintal=homo(kolltal);
bol=primecheck (bintal);
if (bol == 1){
cout << "Stage 3: " << kolltal << endl;
lekvariabel=invert(bintal);
if (bintal == lekvariabel){
cout <<"Stage 4: " << kolltal << endl;}
}
}
}
kolltal++;
}
return 0;
}
//Här kommer en funktion som vänder ett tal
int invert( int a )
{
int iRet = 0,
iLog = log10( a ),
iExp = pow( 10, iLog );
for( iLog++; iLog; iLog-- )
{
iRet += (a % 10) * iExp;
a /= 10;
iExp /= 10;
}
return iRet;
}
//Här börjar funktionen som kollar om tal är ett primtal
float primecheck( float tal )
{ talsqrt=sqrt (tal);
for (divi=2; divi<=talsqrt; divi++)
{
taldiv=tal/divi;
taltest=taldiv;
if (taltest == taldiv)
{
return 0;
break;
}
}
return 1;
}
//Här börjar funktion som gör om ett tal till binärform
int homo ( int decimal )
{
mult=1;
//Tar reda på hur många "celler" som behövs
for (bin=1; decimal>=bin; bin=bin*2)
{
counter ++;
}
//Skapar ett binärtal
for (cp=counter; cp>0; cp=cp-1)
{
runk=cp-1;
platstal=pow(2, runk);
mult=pow(10, cp-1);
if (decimal-platstal>=0)
{
thetal=thetal+mult;
decimal=decimal-platstal;
}
}
return thetal;
}
Code-tagg fixad /Quizor
Björn