カスタム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)
}

関連情報