confunda com usuário awk define função

2

Eu resolvi o problema 3 do Projecteuler, mas o problema é que não consigo criar a função no awk.

Eu tentei este código de trabalho ( sem função):

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

Não está funcionando com a função

#!/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; # minimual prime
           while ( x<n ) {
                   if ( (n%x) == 0 ) {
                           n = n/x
                           print n
                    }  

                  else { # if n not devisable then increment x+1
                           x++
                    }
        }

BEGIN {

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

Eu tentei várias maneiras de trabalhar com a função, mas sem sorte.

Alguém pode destacar o que estou fazendo errado?

    
por Rahul Patil 09.05.2013 / 07:25

2 respostas

2

Livre-se do ponto. Os nomes das funções awk válidas consistem em uma sequência de letras, dígitos e sublinhados, e não começam com dígitos.

    
por 09.05.2013 / 07:58
0

Trabalhando o Script AWK com função.

#!/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; # minimual prime
           while ( x<n ) {
                   if ( (n%x) == 0 ) {
                           n = n/x
                        }
                         else { # if n not devisable then increment x+1
                           x++
                        }
                }
          return n
}

BEGIN {

                n = ARGV[1] # input number by user
                print get_PrimeFactor(n)
}
    
por 09.05.2013 / 08:50

Tags