사용자 정의 awk 함수가 작동하지 않습니다

사용자 정의 awk 함수가 작동하지 않습니다

프로젝트 오일러 문제 3을 해결했는데 문제는 awk에서 함수를 만들 수 없다는 것입니다.

나는 이 작업 코드를 시도했습니다(아니요기능):

#!/usr/bin/awk -f
BEGIN{
    n=600851475143;
    x=2; # minimal prime
    while ( x<n ) {
        if ( (n%x) == 0 ) {
            n = n/x
            print n
        } else { # if n not divisible then increment x+1
            x++
        }
    }
}

작동 안함그리고기능

#!/usr/bin/awk -f
# The prime factors of 13195 are 5, 7, 13 and 29.
# What is the largest prime factor of the number 600851475143 ?

function get.PrimeFactor(n) {
    x=2; # minimal prime
    while ( x<n ) {
        if ( (n%x) == 0 ) {
            n = n/x
            print n
        }
        else { # if n not divisible then increment x+1
            x++
        }
    }

BEGIN {
    n = $1 # input number by user
    get.PrimeFactor(n)
}

나는 성공하지 못한 채 기능을 사용하기 위해 여러 가지 방법을 시도했습니다.

누구든지 내가 뭘 잘못하고 있는지 강조할 수 있나요?

답변1

해당 점을 제거하세요. 유효한 awk 함수 이름은 일련의 문자, 숫자, 밑줄로 구성되며 숫자로 시작하지 않습니다.

답변2

함수를 사용하여 AWK 스크립트를 실행합니다.

#!/usr/bin/awk -f
# The prime factors of 13195 are 5, 7, 13 and 29.
# What is the largest prime factor of the number 600851475143 ?

function get_PrimeFactor(n) {
    x=2; # minimal prime
    while ( x<n ) {
        if ( (n%x) == 0 ) {
            n = n/x
        }
        else { # if n not divisible then increment x+1
            x++
        }
    }
    return n
}

BEGIN {
    n = ARGV[1] # input number by user
    print get_PrimeFactor(n)
}

관련 정보