C code for K-Algorithm

This page contains the code for K-algorithm. While writing the program:

C-codes


#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;
}

Storing Data in a File

  • To make the generated random number easily asscessible from R we store the data in a file.
  • Then the digits are seperated out and they are used in plotting purpose.
     
    #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;
    }