Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "os"
- "strconv"
- )
- // НОД
- func findGCD(a, b int64) int64 {
- for b != 0 {
- // b = a % b
- // a = temp
- a, b = b, a%b
- }
- return a
- }
- // НОК
- func findLCM(a, b int64) int64 {
- gcd := findGCD(a, b)
- lcm := a / gcd * b
- return lcm
- }
- // Функция для нахождения НОК и НОД массива чисел
- func findLCMAndGCD(num []int64) (int64, int64, error) {
- if len(num) == 0 {
- return 0, 0, fmt.Errorf("массив чисел пуст")
- }
- lcm := num[0]
- gcd := num[0]
- for i := 1; i < len(num); i++ {
- number := num[i]
- lcm = findLCM(lcm, number)
- gcd = findGCD(gcd, number)
- }
- return lcm, gcd, nil
- }
- func main() {
- nums := []string{"12", "16", "24", "36"}
- num := []int64{}
- //конвертация массива строк в массив чисел + обработчик ошибки
- for _, z := range nums {
- n, err := strconv.ParseInt(z, 10, 64)
- if err != nil {
- fmt.Println("Должны быть только целые числа.")
- os.Exit(1)
- }
- num = append(num, n)
- }
- lcm, gcd, err := findLCMAndGCD(num)
- // основные ошибка
- if err != nil {
- fmt.Println("Ошибка:", err)
- os.Exit(1)
- }
- for _, i := range num {
- if i < 0 {
- fmt.Println("Должны быть только положительные числа.")
- os.Exit(1)
- }
- }
- fmt.Println("НОК: ", lcm)
- fmt.Println("НОД: ", gcd)
- }
Advertisement
Add Comment
Please, Sign In to add comment