Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int saved[255];
  5.  
  6. int it_collatz(int n, int counter) {
  7. if (n == 1) {
  8. return counter;
  9. } else if (n == 2) {
  10. return counter + 1;
  11. }
  12. switch (n % 4) {
  13. case 0:
  14. return it_collatz(n / 4, counter + 2);
  15. case 3:
  16. return it_collatz(n * 2 + (n / 4) + 2, counter + 4);
  17. default:
  18. return it_collatz(n - (n / 4), counter + 3);
  19. }
  20. }
  21.  
  22. int collatz(int n) {
  23. if (saved[n] == 0) saved[n] = it_collatz(n, 0);
  24. return saved[n];
  25. }
  26.  
  27. typedef struct {
  28. int n;
  29. int counter;
  30. } data;
  31.  
  32. int greater(const void *a, const void *b) {
  33. return (*(data*)b).counter - (*(data*)a).counter;
  34. }
  35.  
  36. int main() {
  37. data d[255];
  38. long begin, end;
  39. begin = clock();
  40. for (int i = 1; i < 256; i++) {
  41. d[i-1].n = i;
  42. d[i-1].counter = collatz(i);
  43. }
  44. qsort(d, 255, sizeof(data), greater);
  45. for (int i = 0; i < 16; i++) {
  46. printf("%x %x\n", d[i].n, d[i].counter);
  47. }
  48. end = clock();
  49. printf("%ld\n", end - begin);
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement