I've written a program to do some basic operations on a long number from the user. Depending on whether the final product ends in a 0 or not, the program printfs "valid" or "invalid". I tried it with some 10 digit numbers and it worked fine, but anything with 11 digits or higher just returns "Floating point exception". Do I need to change my syntax in some way to accommodate longer numbers?
int main(void)
{
long i = 0;
long b;
int m = 10;
int n = 1;
long number = get_long("Number?\n");
do
{
long a = number % m;
b = number - a;
long c = b % (m * 10);
long d = c / m;
long e = d *2;
if (e < 9)
{
i = i + e;
}
else
{
i = i + (e - 10 + 1);
}
{
m = m * 100;
}
}
while (b > 0);
do
{
long a = number % n;
b = number - a;
long c = b % (n * 10);
long d = c / n;
long e = d *2;
if (e < 9)
{
i = i + e;
}
else
{
i = i + (e - 10 + 1);
}
{
n = n * 100;
}
}
while (b > 0);
int f = i % 10;
if (f == 0)
{
printf("valid");
}
else
{
printf("invalid\n");
}
}