Форум программистов, компьютерный форум, киберфорум
alhaos
Войти
Регистрация
Восстановить пароль
Оценить эту запись

ЗАДАЧА №14 НОК

Запись от alhaos размещена 28.10.2020 в 14:30
Обновил(-а) alhaos 28.10.2020 в 14:42

Красноярский краевой Дворец пионеров, (c)2006 - 2020

Требуется написать программу, определяющую наименьшее общее кратное (НОК) чисел a и b.

Входные данные
В единственной строке входного файла INPUT.TXT записаны два натуральных числа А и В через пробел, не превышающих 46340.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — НОК чисел А и В.

Примеры
INPUT.TXTOUTPUT.TXT
136 27108
239 65195

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class myMath {
    static [int[]]GetPrimeEfficient([int]$number){
        $PrimeEfficients = @()
        $PrimeEfficients +=, [Linq.Enumerable]::First([Int32[]](2..$number), [Func[Int32, Boolean]]{($number%$args[0]) -eq 0})
        If ($PrimeEfficients -eq $number) {return $PrimeEfficients}
 
        [int]$number = $number/$PrimeEfficients[-1]
        while ($PrimeEfficients[-1] -ne $number){
            $PrimeEfficients +=, [Linq.Enumerable]::First([Int32[]](2..$number), [Func[Int32, Boolean]]{($number%$args[0]) -eq 0})
            If ($PrimeEfficients -eq $number) {return $PrimeEfficients}
            $number = $number/$PrimeEfficients[-1]
        }
        $PrimeEfficients +=, $number
        return $PrimeEfficients
    }
    static [int[]] MultiArrayMinus($arrayA, $arrayB){
    $arrayB | %{
        $indx = $arrayA.IndexOf($_)
        if ($indx -ge 0){
            $arrayA[$indx] = $null
        }
    }
    return $arrayA.Where({$_})
}
}
 
class problem_014 {
    static solve ([String]$inputFileName, [string]$outputFileName){
    $array = [int[]]((GC $inputFileName) -split "\D+") | sort
        [int[]] $numbersA = [myMath]::GetPrimeEfficient($array[0])
        [int[]] $numbersB = [myMath]::GetPrimeEfficient($array[1])
        [int[]] $numbers = [myMath]::MultiArrayMinus($numbersA, $numbersB)
        [int[]] $numbers = [Linq.Enumerable]::Concat($numbers, $numbersB)
        [Linq.Enumerable]::Aggregate($numbers, [Func[int,int,int]] {$args[0] * $args[1]}) | Out-File $outputFileName
    }
}
[problem_014]::solve('C:\PROBLEMS\014\INPUT.TXT', 'C:\PROBLEMS\014\OUTPUT.TXT')
Размещено в Без категории
Просмотров 392 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.