This page contains the code for K-algorithm. While writing the program:
#include <stdio.h>
#include <math.h>
unsigned long long int K1 (unsigned long long int) ;
unsigned long long int K3 (unsigned long long int x);
unsigned long long int K4 (unsigned long long int x);
unsigned long long int K5 (unsigned long long int x);
unsigned long long int K6 (unsigned long long int x);
unsigned long long int K7 (unsigned long long int x);
unsigned long long int K8 (unsigned long long int x);
unsigned long long int K9 (unsigned long long int x);
unsigned long long int K10 (unsigned long long int x);
unsigned long long int K11 (unsigned long long int x);
unsigned long long int K12 (unsigned long long int x);
int main(void){
int i,n;
unsigned long long int x;
printf("Enter the seed value");
scanf("%llu",&x);
printf("Enter the number of numbers to be generated ");
scanf("%d",&n);
for(i = 0;i < n;i++){
printf("%llu\n",K1(x));
x=K1(x);
}
return 0;
}
unsigned long long int K1(unsigned long long int x){
int y ;
unsigned long long int z;
y= (int) ( x / 1000000000 ) + 1 ;
while(y > 0)
{
z = (int)( x / pow(10,8) ) % 10 ;
switch(z)
{
case 0:
x = K3(x);
x = K4(x);
x = K5(x);
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 1:
x = K4(x);
x = K5(x);
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 2:
x = K5(x);
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 3:
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 4:
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 5:
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 6:
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break;
case 7:
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 8:
x = K11(x);
x = K12(x);
break ;
case 9:
x = K12(x);
break ;
}
y =y - 1 ;
}
return x;
}
unsigned long long int K3 (unsigned long long int x){
if (x / pow(10,9) < 5)
x = x + (5 * pow(10,9) );
return x;
}
unsigned long long int K4 (unsigned long long int x) {
unsigned long long int y = (unsigned long long int) ( x /pow(10,2.0) * x / pow( 10,3.0) ) % (unsigned long long int) pow(10,10) ;
return y ;
}
unsigned long long int K5 (unsigned long long int x) {
return (unsigned long long int)(x * 1001001001) % (unsigned long long int)pow(10,10) ;
}
unsigned long long int K6 (unsigned long long int x) {
unsigned long long int y ;
if ( x < pow(10,8) ) {
y = (unsigned long long int)(x + (unsigned long long int) pow(10,10) - (unsigned long long int)185944323 ) ;
}
else
y = (unsigned long long int)(pow(10,10) - x );
return y;
}
unsigned long long int K7 (unsigned long long int x) {
x = (unsigned long long int) pow(10,5) * (x % (unsigned long long int)pow(10,5) ) + ( x / (unsigned long long int) pow(10,5) ) ;
return x ;
}
unsigned long long int K8 (unsigned long long int x) {
unsigned long long int y = K5(x);
return y ;
}
unsigned long long int K9 (unsigned long long int x) {
int j = 0;
unsigned long long int y;
y = x;
while((x / pow(10.0,j)) !=0)
{
if((y % 10) != 0)
x = x -(unsigned long long int) pow(10.0,j) ;
y= y / 10 ;
j++;
}
return x;
}
unsigned long long int K10(unsigned long long int x){
if(x < (unsigned long long int) pow(10,5) )
x = x*x + 99999 ;
else
x = x - 99999;
return x;
}
unsigned long long int K11(unsigned long long int x){
if(x!=0)
{
while( x < pow(10,9) )
x = 10 * x;
}
return x;
}
unsigned long long int K12(unsigned long long int x){
x = (unsigned long long int) ( x / pow(10,2.0)* (x-1) /pow(10,3.0)) % (unsigned long long int) pow(10,10) ;
return x;
}
#include < stdio.h >
#include < math.h >
unsigned long long int K1 (unsigned long long int) ;
unsigned long long int K3 (unsigned long long int x);
unsigned long long int K4 (unsigned long long int x);
unsigned long long int K5 (unsigned long long int x);
unsigned long long int K6 (unsigned long long int x);
unsigned long long int K7 (unsigned long long int x);
unsigned long long int K8 (unsigned long long int x);
unsigned long long int K9 (unsigned long long int x);
unsigned long long int K10 (unsigned long long int x);
unsigned long long int K11 (unsigned long long int x);
unsigned long long int K12 (unsigned long long int x);
unsigned long long int convert (unsigned long long int x);
int main(void)
{
int i,n;
unsigned long long int x;
FILE *fp;
printf("Enter the seed value");
scanf("%llu",&x);
printf("Enter the number of numbers to be generated ");
scanf("%d",&n);
fp = fopen("smrdata","w");
for(i = 0;i < n;i++){
fprintf(fp,"%llu",convert(K1(x)));
x = K1(x);
}
fclose(fp);
}
unsigned long long int K1(unsigned long long int x){
int y ;
unsigned long long int z;
y= (int) ( x / 1000000000 ) + 1 ;
while(y > 0)
{
z = (int)( x / pow(10,8) ) % 10 ;
switch(z)
{
case 0:
x = K3(x);
x = K4(x);
x = K5(x);
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 1:
x = K4(x);
x = K5(x);
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 2:
x = K5(x);
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 3:
x = K6(x);
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 4:
x = K7(x);
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 5:
x = K8(x);
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 6:
x = K9(x);
x = K10(x);
x = K11(x);
x = K12(x);
break;
case 7:
x = K10(x);
x = K11(x);
x = K12(x);
break ;
case 8:
x = K11(x);
x = K12(x);
break ;
case 9:
x = K12(x);
break ;
}
y =y - 1 ;
}
return x;
}
unsigned long long int K3 (unsigned long long int x){
if (x / pow(10,9) < 5)
x = x + (5 * pow(10,9) );
return x;
}
unsigned long long int K4 (unsigned long long int x) {
unsigned long long int y = (unsigned long long int) ( x /pow(10,2.0) * x / pow( 10,3.0) ) % (unsigned long long int) pow(10,10) ;
return y ;
}
unsigned long long int K5 (unsigned long long int x) {
return (unsigned long long int)(x * 1001001001) % (unsigned long long int)pow(10,10) ;
}
unsigned long long int K6 (unsigned long long int x) {
unsigned long long int y ;
if ( x < pow(10,8) ) {
y = (unsigned long long int)(x + (unsigned long long int) pow(10,10) - (unsigned long long int)185944323 ) ;
}
else
y = (unsigned long long int)(pow(10,10) - x );
return y;
}
unsigned long long int K7 (unsigned long long int x) {
x = (unsigned long long int) pow(10,5) * (x % (unsigned long long int)pow(10,5) ) + ( x / (unsigned long long int) pow(10,5) ) ;
return x ;
}
unsigned long long int K8 (unsigned long long int x) {
unsigned long long int y = K5(x);
return y ;
}
unsigned long long int K9 (unsigned long long int x) {
int j = 0;
unsigned long long int y;
y = x;
while((x / pow(10.0,j)) !=0)
{
if((y % 10) != 0)
x = x -(unsigned long long int) pow(10.0,j) ;
y= y / 10 ;
j++;
}
return x;
}
unsigned long long int K10(unsigned long long int x){
if(x < (unsigned long long int) pow(10,5) )
x = x*x + 99999 ;
else
x = x - 99999;
return x;
}
unsigned long long int K11(unsigned long long int x){
if(x!=0)
{
while( x < pow(10,9) )
x = 10 * x;
}
return x;
}
unsigned long long int K12(unsigned long long int x){
x = (unsigned long long int) ( x / pow(10,2.0)* (x-1) /pow(10,3.0)) % (unsigned long long int) pow(10,10) ;
return x;
}
unsigned long long int convert (unsigned long long int x){
while(x < (unsigned long long int)pow(10.0,10.0))
x = x * 10;
return x;
}