#include #include #include long long seed; long long middle_square_math(){ seed = seed * seed / 1000 % 1000000; return seed; } long long middle_square_string() { char squared_seed_str[13]; // Store the seed as a string with space for null terminator char result_str[7]; // Store the result as a string with space for null terminator long long result; int mid = 3; // Middle index for 6-digit seed (could be generalized to n/2) long long squared_seed = seed * seed; // Square the seed // Convert the squared seed to a string with 12 characters sprintf(squared_seed_str, "%012lld", squared_seed); //printf("String of squared seed (%012lld)=%s\n\n",seed, squared_seed_str); //strncpy(result_str, squared_seed_str + mid, mid*2); for(int i=0; i<=mid*2; i++) result_str[i] = squared_seed_str[i+mid]; result_str[6] = '\0'; // Null-terminate the result string //printf("Middle from squared seed %s\n\n", result_str); // Convert the middle digits back to a long long integer result = atoll(result_str); //printf("%lld\n", result); seed = result; return seed; } int main(){ seed = 675248; printf("Middle Square Method (math)\n"); for(int i=1;i<=5;i++) printf("%lld\n", middle_square_math()); // Reset the seed seed = 675248; printf("\n\nMiddle Square Method (string)\n"); for(int i=1;i<=5;i++) printf("%lld\n", middle_square_string()); return 0; }