marfach

нок и нод golang

Oct 18th, 2023 (edited)
1,095
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.46 KB | Source Code | 0 0
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "os"
  6.     "strconv"
  7. )
  8.  
  9. // НОД
  10. func findGCD(a, b int64) int64 {
  11.     for b != 0 {
  12.         // b = a % b
  13.         // a = temp
  14.         a, b = b, a%b
  15.     }
  16.     return a
  17. }
  18.  
  19. // НОК
  20. func findLCM(a, b int64) int64 {
  21.     gcd := findGCD(a, b)
  22.     lcm := a / gcd * b
  23.     return lcm
  24. }
  25.  
  26. // Функция для нахождения НОК и НОД массива чисел
  27. func findLCMAndGCD(num []int64) (int64, int64, error) {
  28.     if len(num) == 0 {
  29.         return 0, 0, fmt.Errorf("массив чисел пуст")
  30.     }
  31.  
  32.     lcm := num[0]
  33.     gcd := num[0]
  34.  
  35.     for i := 1; i < len(num); i++ {
  36.         number := num[i]
  37.         lcm = findLCM(lcm, number)
  38.         gcd = findGCD(gcd, number)
  39.     }
  40.  
  41.     return lcm, gcd, nil
  42. }
  43.  
  44. func main() {
  45.     nums := []string{"12", "16", "24", "36"}
  46.     num := []int64{}
  47.  
  48.     //конвертация массива строк в массив чисел + обработчик ошибки
  49.     for _, z := range nums {
  50.         n, err := strconv.ParseInt(z, 10, 64)
  51.         if err != nil {
  52.             fmt.Println("Должны быть только целые числа.")
  53.             os.Exit(1)
  54.         }
  55.         num = append(num, n)
  56.  
  57.     }
  58.  
  59.     lcm, gcd, err := findLCMAndGCD(num)
  60.  
  61.     // основные ошибка
  62.     if err != nil {
  63.         fmt.Println("Ошибка:", err)
  64.         os.Exit(1)
  65.     }
  66.     for _, i := range num {
  67.         if i < 0 {
  68.             fmt.Println("Должны быть только положительные числа.")
  69.             os.Exit(1)
  70.         }
  71.  
  72.     }
  73.  
  74.     fmt.Println("НОК: ", lcm)
  75.     fmt.Println("НОД: ", gcd)
  76. }
  77.  
Tags: math golang
Advertisement
Add Comment
Please, Sign In to add comment