Вычисление наибольшего общего делителя в языке awk - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь написать код для вычисления наибольшего общего делителя двух натуральных чисел для языка awk , но мои попытки пока не увенчались успехом.

Буду благодарен за вашу помощь.

Моя попытка:

awk '{ a = 5, b = 10
while (a!=0 and b!=0){
  if (a > b) { a = a % b } 
  else { b = b % a}
 } 
}' 
print (a+b) 

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

С https://rosettacode.org/wiki/Category:AWK

function gcd(p,q){return(q?gcd(q,(p%q)):p)}
0 голосов
/ 05 ноября 2018

Исправление синтаксических и семантических ошибок в вашем скрипте приводит к:

awk '
BEGIN {
    a = 5
    b = 10
    while ( (a!=0) && (b!=0) ) {
        if (a > b) {
            a = a % b
        }
        else {
            b = b % a
        }
    }
    print (a+b)
}
'
5

Если алгоритм неправильный, то поиск в Google «наибольший общий делитель кода двух натуральных чисел» приводит к нескольким примерам, включая 3 при https://www.programiz.com/c-programming/examples/hcf-gcd. Просто внесите незначительные изменения в один из них (т.е. избавьтесь от объявлений переменных) , первый printf и scanf), который использует awk вместо синтаксиса C со своими жестко заданными значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...