1. C code for division of very
big numbers.
2. How to
get division of two very
large numbers larger or beyond than long int in c programming language.
#include<stdio.h>
#include<string.h>
#define MAX 10000
int validate(char []);
char * division(char[],long);
long int remainder;
int main(){
char dividend[MAX],*quotient;
long int divisor;
printf("Enter
dividend: ");
scanf("%s",dividend);
if(validate(dividend))
return 0;
printf("Enter
divisor: ");
scanf("%ld",&divisor);
quotient
= division(dividend,divisor);
while(*quotient)
if(*quotient ==48)
quotient++;
else
break;
printf("Quotient:
%s / %ld = %s",dividend,divisor,quotient);
printf
("\nRemainder:
%ld",remainder);
return 0;
}
int validate(char num[]){
int i=0;
while(num[i]){
if(num[i] < 48
|| num[i]> 57){
printf("Invalid positive integer:
%s",num);
return 1;
}
i++;
}
return 0;
}
char * division(char dividend[],long divisor){
static char quotient[MAX];
long temp=0;
int i=0,j=0;
while(dividend[i]){
temp
= temp*10 + (dividend[i] -48);
if(temp<divisor){
quotient[j++]
= 48;
}
else{
quotient[j++]
= (temp / divisor) + 48;;
temp
= temp % divisor;
}
i++;
}
quotient[j]
= '\0';
remainder
= temp;
return quotient;
}
Sample
output:
Enter dividend: 543109237823560187
Enter divisor: 456
Quotient: 543109237823560187 / 456 = 1191029030314824
Remainder: 443
Other program (source code):
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define MAX 10000
char * division(char [],unsigned long);
int main(){
char a[MAX];
unsigned long b;
char *c;
printf("Enter
the divdend : ");
scanf("%s",a);
printf("Enter
the divisor : ");
scanf("%lu",&b);
c
= division(a,b);
printf("\nQuotient
of the division : ");
printf("%s",c);
return 0;
}
char * division(char a[],unsigned long b){
static char c[MAX];
int la;
int i,k=0,flag=0;
unsigned long
temp=1,reminder;
la=strlen(a);
for(i=0;i<=la;i++){
a[i]
= a[i] - 48;
}
temp
= a[0];
reminder
= a[0];
for(i=1;i<=la;i++){
if(b<=temp){
c[k++]
= temp/b;
temp
= temp % b;
reminder
= temp;
temp
=temp*10 + a[i];
flag=1;
}
else{
reminder
= temp;
temp
=temp*10 + a[i];
if(flag==1)
c[k++]
= 0;
}
}
for(i=0;i<k;i++){
c[i]=c[i]+48;
}
c[i]=
'\0';
printf("Reminder
of division: %lu ",reminder);
return c;
}
Sample
output:
Enter the divdend:
55555555555555555555555555555555555555555
Enter the divisor: 5
Reminder of division: 0
Quotient of the division:
11111111111111111111111111111111111111111
No comments:
Post a Comment