I am a new C-learner and trying to find Vampire Numbers from 10 to 1 million.
Vampire Number: http://en.wikipedia.org/wiki/Vampire_number
The code is ready but, It doesn't work as It is supposed to. It just continues searching for a long time without printing anything and a while later prints enormous numbers. I couldn't figure out what the problem is and this is what code looks like:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define true 1
#define false 0
int main(void){
int i,j,t,s,m,n,counter=0;
for(i=10; i<100; i++){
m = Control2Digits(i);
if(m == true){
counter++;
printf("%d.Vampire number: %d \n", counter, i);
}
}
for(j=1000; j<10000; j++){
m = Control4Digits(j);
if(m == true){
counter++;
printf("%d.Vampire number: %d \n", counter , j);
}
}
for(t=100000; t<1000000; t++){
for(s=100000; s<1000000; s++){
m = Control6Digits(s,t);
if(m == true){
n = (s*t);
counter++;
printf("%d.Vampire number: %d \n", counter, n);
}
}
}
}
int Control2Digits(int number){
int n1,n2;
n1 = number%10;
n2 = (number-n1)/10;
if(n1*n2 == number)
return true;
return false;
}
int calculate4(int s1, int s2, int s3, int s4){
int p1,p2;
p1 = (s1*10)*s2;
p2 = (s3*10)*s4;
return (p1*p2);
}
int Control4Digits(int number){
int g1,g2;
int t1,t2,t3,t4;
if(number%100 == 0)
return false;
g1 = number/100;
g2 = number%100;
t1 = g1/10;
t2 = g1%10;
t3 = g2/10;
t4 = g2%10;
if(calculate4(t1,t2,t3,t4) == number)
return true;
else if(calculate4(t2,t1,t3,t4) == number)
return true;
else if(calculate4(t2,t1,t4,t3) == number)
return true;
else if(calculate4(t1,t2,t4,t3) == number)
return true;
else if(calculate4(t1,t3,t2,t4) == number)
return true;
else if(calculate4(t3,t1,t2,t4) == number)
return true;
else if(calculate4(t1,t4,t2,t3) == number)
return true;
else if(calculate4(t1,t3,t4,t2) == number)
return true;
else if(calculate4(t4,t1,t2,t3) == number)
return true;
else if(calculate4(t3,t1,t4,t2) == number)
return true;
else if(calculate4(t1,t4,t3,t2) == number)
return true;
else if(calculate4(t4,t1,t3,t2) == number)
return true;
return false;
}
int Control6Digits(int num1, int num2){
long int k,l,m,n,c;
k = num1%10;
l = num2%10;
if(k + l == 0)
return false;
else{
m = (num1*num2);
n = (num1*1000+num2);
if(a == g)
return true;
c = true;
}
return false;
}