Rare numbers: Difference between revisions
→{{header|Go}}: Some improvements - reduces execution time by about a third.
(→{{header|Go}}: Some improvements - reduces execution time by about a third.) |
|||
Line 74:
=={{header|Go}}==
Despite all this, it's still
Timings are for an Intel Core i7-8565U machine.
<lang go>package main
Line 196 ⟶ 198:
digits[i] = 0
}
switch a {
case 3:
digits[ai], digits[qi] = 4, 0
Line 208 ⟶ 210:
digits[ai] = 2
}
a = digits[ai]
}
if b != p {▼
continue▼
}▼
case 4:▼
if (b-p)%2 != 0 {▼
continue▼
}▼
case 6:▼
if (b-p)%2 == 0 {▼
continue▼
}▼
▲ switch digits[qi] {
case 2:
if b
continue
} else if b > p {
digits[qi-1] = b
}
case
if
digits[qi-1]++
} else {
▲ continue
▲ }
}
case
if (b
digits[qi-1]++
} else {
▲ continue
▲ }
}
case 8:
case
if p < 9-b {
digits[qi-1] = 9 - b
} else {
continue
}
▲ }
if b > 1 && (b+p) != 11 {
if p < 11-b {
digits[qi-1] = 11 - b
} else {
continue
}
} else if b < 1 && (b+p) != 1 {
if p == 0 {
digits[qi-1] = 1
} else {
continue
}
}
▲ continue
} else if b > p {
digits[qi-1] = b
} else {
continue
}
}
}
}
Line 291 ⟶ 321:
if sr*sr != n-r {
continue
}
count++
fmt.Printf(" %d: %15s\n", count, commatize(n))
Line 298 ⟶ 328:
}
}
fmt.Printf("\nTook %s\n", time.Since(start))
}</lang>
{{
<pre>
The first 8 rare numbers are:
Line 313 ⟶ 343:
8: 872,568,754,178
Took
</pre>
|