프로젝트 오일러 문제 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)
}