Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. void main() {
  2. print('D => N');
  3. var length = 3000;
  4. var map = primesMap().take(length).toList();
  5.  
  6. for (int d = 0; d < length; d++) {
  7. var dd = map[d];
  8. BigInt n = getN(BigInt.from(dd));
  9. if (n == dd) {
  10. print('prime here start ----');
  11. print('$dd => $n ');
  12. print('prime here end -----');
  13. } else {
  14. print('$dd => $n ');
  15. }
  16. }
  17. }
  18.  
  19. Iterable<int> primesMap() {
  20. Iterable<int> oddprms() sync* {
  21. yield(3); yield(5); // need at least 2 for initialization
  22. final Map<int, int> bpmap = {9: 6};
  23. final Iterator<int> bps = oddprms().iterator;
  24. bps.moveNext(); bps.moveNext(); // skip past 3 to 5
  25. int bp = bps.current;
  26. int n = bp;
  27. int q = bp * bp;
  28. while (true) {
  29. n += 2;
  30. while (n >= q || bpmap.containsKey(n)) {
  31. if (n >= q) {
  32. final int inc = bp << 1;
  33. bpmap[bp * bp + inc] = inc;
  34. bps.moveNext(); bp = bps.current; q = bp * bp;
  35. } else {
  36. final int inc = bpmap.remove(n);
  37. int next = n + inc;
  38. while (bpmap.containsKey(next)) {
  39. next += inc;
  40. }
  41. bpmap[next] = inc;
  42. }
  43. n += 2;
  44. }
  45. yield(n);
  46. }
  47. }
  48. return [2].followedBy(oddprms());
  49. }
  50.  
  51. BigInt getN(BigInt d) {
  52. int acc = 1;
  53. while (true) {
  54. BigInt value = BigInt.parse(acc.toRadixString(2));
  55. BigInt mod = value % d;
  56. if (mod == BigInt.zero) {
  57. return value;
  58. }
  59. acc++;
  60. if (acc > 10000000) {
  61. print('overflow');
  62. return d;
  63. }
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement