Semiprime: Difference between revisions
→{{header|Sidef}}: updated code
Catskill549 (talk | contribs) |
(→{{header|Sidef}}: updated code) |
||
Line 2,227:
=={{header|Sidef}}==
Built-in:
<lang ruby>say is_semiprime(2**128 + 1) #=> true
say is_semiprime(2**256 - 1) #=> false</lang>
User-defined function, with trial division up to a given bound '''B''':
<lang ruby>func is_semiprime(n, B=1e4) {
if (var p = [nt.trial_factor(n, 500)]) {▼
return false if (p.len > 2);▼
return !!nt.is_prime(p[1]) if (p.len == 2);▼
}▼
[nt.factor(n)].len == 2;▼
}▼
say [2,4,99,100,1679,32768,1234567,9876543,900660121].grep{ is_semiprime(_) }</lang>▼
▲ }
▲}
{{out}}
<pre>
|