36 lines
728 B
Go
36 lines
728 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"math/big"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
func main() {
|
|
c := exec.Command("ft", "1000000", "2", `17/91 78/85 19/51 23/38
|
|
29/33 77/29 95/23 77/19 1/17 11/13 13/11 15/14 15/2 55/1`)
|
|
c.Stderr = os.Stderr
|
|
r, err := c.StdoutPipe()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
if err = c.Start(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
var n big.Int
|
|
for primes := 0; primes < 20; {
|
|
if _, err = fmt.Fscan(r, &n); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
l := n.BitLen() - 1
|
|
n.SetBit(&n, l, 0)
|
|
if n.BitLen() == 0 && l > 1 {
|
|
fmt.Printf("%d ", l)
|
|
primes++
|
|
}
|
|
}
|
|
fmt.Println()
|
|
}
|