package main
import (
"fmt"
"time"
)
const TARGET int = 22
func IstTeilbarAlle(n, m int) bool {
for i := m; i > 1; i-- {
if n % i != 0 {
return false
}
}
return true
}
func iterator() chan int {
c := make(chan int)
go func() {
i := 1
for {
c <- i
i++
}
}()
return c
}
func check(c, out chan int, n int) {
for {
x := n * <- c
if IstTeilbarAlle(x, n - 1) {
out <- x
return
}
}
}
func main() {
started
:= time.
Seconds() fmt.Printf("Suche alle Teiler von %v\n", TARGET)
c := iterator()
out := make(chan int)
go check(c, out, TARGET)
go check(c, out, TARGET)
go check(c, out, TARGET)
go check(c, out, TARGET)
fmt.
Printf("Ergebnis: %v (nach %v Sekunden)\n", <- out
, time.
Seconds() - started
)}
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJImZtdCIKCSJ0aW1lIgopCgpjb25zdCBUQVJHRVQgaW50ID0gMjIKCmZ1bmMgSXN0VGVpbGJhckFsbGUobiwgbSBpbnQpIGJvb2wgewoJZm9yIGkgOj0gbTsgaSA+IDE7IGktLSB7CgkJaWYgbiAlIGkgIT0gMCB7CgkJCXJldHVybiBmYWxzZQoJCX0KCX0KCXJldHVybiB0cnVlCn0KCmZ1bmMgaXRlcmF0b3IoKSBjaGFuIGludCB7CgljIDo9IG1ha2UoY2hhbiBpbnQpCglnbyBmdW5jKCkgewoJCWkgOj0gMQoJCWZvciB7CgkJCWMgPC0gaQoJCQlpKysKCQl9Cgl9KCkKCXJldHVybiBjCn0KCmZ1bmMgY2hlY2soYywgb3V0IGNoYW4gaW50LCBuIGludCkgewoJZm9yIHsKCQl4IDo9IG4gKiA8LSBjCgkJaWYgSXN0VGVpbGJhckFsbGUoeCwgbiAtIDEpIHsKCQkJb3V0IDwtIHgKCQkJcmV0dXJuCgkJfQoJfQp9CgpmdW5jIG1haW4oKSB7CglzdGFydGVkIDo9IHRpbWUuU2Vjb25kcygpCglmbXQuUHJpbnRmKCJTdWNoZSBhbGxlIFRlaWxlciB2b24gJXZcbiIsIFRBUkdFVCkKCWMgOj0gaXRlcmF0b3IoKQoJb3V0IDo9IG1ha2UoY2hhbiBpbnQpCglnbyBjaGVjayhjLCBvdXQsIFRBUkdFVCkKCWdvIGNoZWNrKGMsIG91dCwgVEFSR0VUKQoJZ28gY2hlY2soYywgb3V0LCBUQVJHRVQpCglnbyBjaGVjayhjLCBvdXQsIFRBUkdFVCkKCWZtdC5QcmludGYoIkVyZ2VibmlzOiAldiAobmFjaCAldiBTZWt1bmRlbilcbiIsIDwtIG91dCwgdGltZS5TZWNvbmRzKCkgLSBzdGFydGVkKQp9Cg==