Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- bool in_array (int needle, int haystack[5000]) {
- for (int i = 0; haystack[i] != -1; i++) {
- if (needle == haystack[i]) return true;
- } return false;
- }
- void add (int needle, int haystack[5000]) {
- int i = 0;
- while (haystack[i] != -1) i++;
- if (haystack[i] == -1) {
- haystack[i] = needle;
- haystack[i+1] = -1;
- }
- }
- void print (int haystack[5000]) {
- for (int i = 0; haystack[i] != -1; i++) {
- printf("%i ",haystack[i]);
- }
- printf("\n");
- }
- int length (int haystack[5000]) {
- int li = 0;
- for (int i = 0; haystack[i] != -1; i++) {
- li++;
- }
- return li;
- }
- int valuation (int base, int number) {
- if (number % base != 0) return 0;
- if (number == 0) return -1661992959; else {
- int c = number;
- int i = 0;
- while (c % base == 0) {
- c /= base;
- i++;
- }
- return i;
- }
- }
- int powval (int base, int number) {
- int val = valuation(base, number);
- int prod = 1;
- if (val <= 0) return prod; else {
- for (int i = 0; i < val; i++) {
- prod *= base;
- }
- return prod;
- }
- }
- int collatz (int number, int base = 2) {
- if (number % base == 0) return number/powval(base,number); else {
- int num = (int(number/base) + number + 1);
- return num/powval(base,num);
- }
- }
- int main (int, char **) {
- int i,j;
- int now;
- bool dowhile, overall;
- int haystack[5000];
- int yeetsack[5000];
- for (int step = 2; step <= 250/4; step++) {
- goto yeeeet;
- yeet2:
- printf("b = %i, m != n and a_m = a_n = ... : ",step-1);
- print(yeetsack);
- yeeeet:
- yeetsack[0] = -1;
- for (i = step; i < 100000000; i++) {
- dowhile = false;
- haystack[0] = i;
- haystack[1] = -1;
- j = i;
- while (!in_array(collatz(j,step),haystack) and collatz(j,step) >= step) {
- add(collatz(j,step),haystack);
- j = collatz(j,step);
- }
- add(collatz(j,step),haystack);
- now = haystack[length(haystack)-1];
- if (now <= 0) dowhile = true;
- if (!in_array(now,yeetsack)) {
- add(now,yeetsack);
- }
- overall = true;
- for (int k = 0; k < step; k++) {
- if (in_array(k,haystack)) overall = false;
- }
- if ((dowhile or now < 0 or now >= step) and overall) {
- i = 0; step++;
- if (now < 0) {
- haystack[length(haystack)-1] = -1;
- yeetsack[length(yeetsack)-1] = -1;
- }
- if (now >= step) {
- printf(" (doesn't work) b = %i, m != n and a_m = a_n = ... : ",step-1);
- print(yeetsack);
- goto yeeeet;
- }
- goto yeet2;
- }
- }
- printf("b = %i, m != n and a_m = a_n = ... : ",step);
- print(yeetsack);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement