Guest User

Untitled

a guest
Oct 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "math/big"
  6. "sync"
  7. )
  8.  
  9. func runInThread(wg *sync.WaitGroup, startFrom int64, numOfIterations int64) {
  10. defer wg.Done()
  11.  
  12. bigInt := new(big.Int)
  13. zero := big.NewInt(0)
  14.  
  15. // Suchalove N
  16. N := new(big.Int)
  17. N.SetString("19320234965388231365540331093872230283778945634556596682214163280186385949444714747846212850116256215110019915157460836374458213753399271651569995871137126916385002459283305264844322656670858555695350602088849590984911208795341527784373572568199485660335040039545712139902834483955502131356223511756716987839814223560695397544760324236593252526008468733300092541502234485830371545572743645953216843356025562571409688147979531382601119854626778211029567854618943714104772640084682336503263097825328909488844956732298839600439486781366754445139880815199642118131001675897147726276626348623513074701194667574356320780611", 10)
  18.  
  19. for i := startFrom; i < numOfIterations; i += 2 {
  20. result := bigInt.Mod(N, big.NewInt(i))
  21. if result.Cmp(zero) == 0 {
  22. fmt.Println(i)
  23. }
  24. }
  25.  
  26. fmt.Println("runInThread(%v,%v) ended", startFrom, numOfIterations)
  27. }
  28.  
  29. func main() {
  30. var wg sync.WaitGroup
  31.  
  32. numOfIterations := 100000000
  33. numberOfThreads := 8
  34. add := numOfIterations / numberOfThreads
  35.  
  36. for i := 0; i < numberOfThreads; i += 1 {
  37. wg.Add(1)
  38. go runInThread(&wg, int64((i * add) + 1), int64(((i + 1) * add)))
  39. }
  40.  
  41. wg.Wait()
  42. fmt.Println("main() ended")
  43. }
Add Comment
Please, Sign In to add comment