Minimum primes

From Rosetta Code
Minimum primes is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task


Given three lists:

  • Numbers1 = [5,45,23,21,67]
  • Numbers2 = [43,22,78,46,38]
  • Numbers3 = [9,98,12,54,53]


then:

  1. Select the maximum (max) of Numbers[n], Numbers2[n] and Numbers3[n], where n <= 5 (one based).
  2. Select minPrime for that minPrime is a minimal prime and minPrime >= max
  3. Add minPrime to a new list (Primes)
  4. Show Primes on this page.



C

Translation of: Wren

<lang c>#include <stdio.h>

  1. define TRUE 1
  2. define FALSE 0

int isPrime(int n) {

   int d;
   if (n < 2) return FALSE;
   if (n%2 == 0) return n == 2;
   if (n%3 == 0) return n == 3;
   d = 5;
   while (d*d <= n) {
       if (!(n%d)) return FALSE;
       d += 2;
       if (!(n%d)) return FALSE;
       d += 4;
   }
   return TRUE;

}

int max(int a, int b) {

   if (a > b) return a;
   return b;

}

int main() {

   int n, m;
   int numbers1[5] = { 5, 45, 23, 21, 67};
   int numbers2[5] = {43, 22, 78, 46, 38};
   int numbers3[5] = { 9, 98, 12, 54, 53};
   int primes[5]   = {};
   for (n = 0; n < 5; ++n) {
       m = max(max(numbers1[n], numbers2[n]), numbers3[n]);
       if (!(m % 2)) m++;
       while (!isPrime(m)) m += 2;
       primes[n] = m;
       printf("%d ", primes[n]);
   }
   printf("\n");
   return 0;

}</lang>

Output:
43 101 79 59 67 

Go

Translation of: Wren
Library: Go-rcu

<lang go>package main

import (

   "fmt"
   "rcu"

)

func main() {

   numbers1 := [5]int{5, 45, 23, 21, 67}
   numbers2 := [5]int{43, 22, 78, 46, 38}
   numbers3 := [5]int{9, 98, 12, 54, 53}
   primes := [5]int{}
   for n := 0; n < 5; n++ {
       max := rcu.Max(rcu.Max(numbers1[n], numbers2[n]), numbers3[n])
       if max % 2 == 0 {
           max++
       }
       for !rcu.IsPrime(max) {
           max += 2
       }
       primes[n] = max
   }
   fmt.Println(primes)

}</lang>

Output:
[43 101 79 59 67]

Julia

<lang julia>using Primes

println(nextprime.(maximum(hcat([5,45,23,21,67], [43,22,78,46,38], [9,98,12,54,53]), dims=2)))

</lang>

Output:
[43; 101; 79; 59; 67;;]

Perl

<lang perl>#!/usr/bin/perl

use strict; # https://rosettacode.org/wiki/Minimum_primes use warnings; use ntheory qw( next_prime ); use List::Util qw( max );

my @Numbers1 = (5,45,23,21,67); my @Numbers2 = (43,22,78,46,38); my @Numbers3 = (9,98,12,54,53);

my @Primes = map {

 next_prime( max( $Numbers1[$_], $Numbers2[$_], $Numbers3[$_] ) - 1 )
 } 0 .. 4;

print "@Primes\n";</lang>

Output:
43 101 79 59 67

Raku

Seems kind of pointless to specify a maximum of 5 terms when there are only 5 elements in each list but... ¯\_(ツ)_/¯

<lang perl6>say ([Zmax] <5 45 23 21 67>, <43 22 78 46 38>, <9 98 12 54 53>)».&next-prime[^5];

sub next-prime { ($^m..*).first: &is-prime }</lang>

Output:
(43 101 79 59 67)

Ring

<lang ring> load "stdlib.ring" see "working..." + nl

Primes = [] Numbers1 = [5,45,23,21,67] Numbers2 = [43,22,78,46,38] Numbers3 = [9,98,12,54,53]

for n = 1 to len(Numbers1)

   Temp = []
   add(Temp,Numbers1[n])
   add(Temp,Numbers2[n])
   add(Temp,Numbers3[n])
   max = max(Temp)
   max--
   while true 
         max++
         if isprime(max) 
            exit
         ok
   end
   add(Primes,max) 

next

see "Minimum primes = " see showArray(Primes) see nl + "done..." + nl

func showArray(array)

    txt = ""
    see "["
    for n = 1 to len(array)
        txt = txt + array[n] + ","
    next
    txt = left(txt,len(txt)-1)
    txt = txt + "]"
    see txt

</lang>

Output:
working...
Minimum primes = [43,101,79,59,67]
done...

Wren

Library: Wren-math

<lang ecmascript>import "./math" for Int

var numbers1 = [ 5, 45, 23, 21, 67] var numbers2 = [43, 22, 78, 46, 38] var numbers3 = [ 9, 98, 12, 54, 53] var primes = List.filled(5, 0) for (n in 0..4) {

   var max = numbers1[n].max(numbers2[n]).max(numbers3[n])
   if (max % 2 == 0) max = max + 1
   while(!Int.isPrime(max)) max = max + 2
   primes[n] = max

} System.print(primes)</lang>

Output:
[43, 101, 79, 59, 67]