48 lines
1 KiB
Text
48 lines
1 KiB
Text
$ p1 = f$integer( p1 )
|
|
$ if p1 .lt. 2
|
|
$ then
|
|
$ write sys$output "out of range 2 thru 2^31-1"
|
|
$ exit
|
|
$ endif
|
|
$
|
|
$ close /nolog primes
|
|
$ on control_y then $ goto clean
|
|
$ open primes primes.txt
|
|
$
|
|
$ loop1:
|
|
$ read /end_of_file = prime primes prime
|
|
$ prime = f$integer( prime )
|
|
$ loop2:
|
|
$ t = p1 / prime
|
|
$ if t * prime .eq. p1
|
|
$ then
|
|
$ if f$type( factorization ) .eqs. ""
|
|
$ then
|
|
$ factorization = f$string( prime )
|
|
$ else
|
|
$ factorization = factorization + "*" + f$string( prime )
|
|
$ endif
|
|
$ if t .eq. 1 then $ goto done
|
|
$ p1 = t
|
|
$ goto loop2
|
|
$ else
|
|
$ goto loop1
|
|
$ endif
|
|
$ prime:
|
|
$ if f$type( factorization ) .eqs. ""
|
|
$ then
|
|
$ factorization = f$string( p1 )
|
|
$ else
|
|
$ factorization = factorization + "*" + f$string( p1 )
|
|
$ endif
|
|
$ done:
|
|
$ show symbol factorization
|
|
$ if f$locate( "*", factorization ) .eq. f$length( factorization )
|
|
$ then
|
|
$ write sys$output "so, it is prime"
|
|
$ else
|
|
$ if f$element( 2, "*", factorization ) .eqs. "*" then $ write sys$output "so, it is semiprime"
|
|
$ endif
|
|
$
|
|
$ clean:
|
|
$ close primes
|