[MatLab]

Messaggioda grillo370 » 20/03/2019, 10:13

Salve a tutti dovrei svolgere questo esercizio ma non so come fare, non ho mai usato matlab/octave ed ho solo una sorta di guida sui comandi:
Si scriva una funzione Octave denominata Verifica che, dati due vettori di interi V e W ed un intero k,
restituisca il numero di elementi in V che siano numeri primi e per i quali il vettore W contenga almeno k multipli.

Ad esempio, per V={12, 13, 8, 24, 3}, W=[34, 39, 26, 6] e k=2,
la funzione Verifica restituisce 2, poiché gli elementi primi che compaiono nel vettore V
hanno almeno k=2 multipli nel vettore W (in maggior dettaglio, i k multipli sono {39, 26} per
l’elemento 13 e {6, 39} per l’elemento 3).
grillo370
Starting Member
Starting Member
 
Messaggio: 5 di 14
Iscritto il: 13/08/2018, 17:01

Re: [MatLab]

Messaggioda dan95 » 20/03/2019, 18:56

Ciao, provo a risponderti... costruisci due funzioni1

Codice:
Prime(n)
Div(n,m)


La prima restituisce 1 se n e primo 0 altrimenti, la seconda restituisce 1 se n divide m e 0 altrimenti

Codice:
function[N]=verifica[V,W,k]
         N=0;
          LV=length(V);
          LW=length(W);
          For i=1:LV
               If prime(V(i))==1
                    Cont=0;
                    For j=1:LW
                          If div(V(i),W(j))==1
                                 cont++;
                           end
                    end
                           If cont>k-1
                                  N++;
                            end

                       
                   end
            end
Return
                                         



Note

  1. Forse esistono già su matlab, controlla...
Ultima modifica di dan95 il 22/03/2019, 20:53, modificato 1 volta in totale.
"Chi è padrone del proprio respiro, è padrone della propria vita."~ Antico proverbio

"La capacità di scegliere è un dono che la natura fa all'uomo. Scegliere è un dono che l'uomo fa a se stesso." D.B.

"Il genio è semplicemente un uomo con la mente da donna." D. B.
dan95
Cannot live without
Cannot live without
 
Messaggio: 2478 di 5268
Iscritto il: 10/06/2013, 16:37
Località: Roma Caput Mundi

Re: [MatLab]

Messaggioda grillo370 » 22/03/2019, 14:54

Potresti spiegarmelo passo passo come è stato costruito?
grillo370
Starting Member
Starting Member
 
Messaggio: 6 di 14
Iscritto il: 13/08/2018, 17:01

Re: [MatLab]

Messaggioda dan95 » 22/03/2019, 20:52

Controllando su internet esistono due funzioni isprime e isdivisible in matlab che fanno quello che fa prime e div... detto questo andiamo al codice

La prima riga inializza N, la seconda e la terza prendono in memoria le lunghezze dei due vettori V e W per evitare di ricalcorarle sempre

Il primo for scorre il vettore V e quando trova un primo

Codice:
if isprime(V(i))==1


Scorre il vettore W per vedere se questo primo divide una delle componenti di W e cont conta quanti multipli ha V(i) in W e se questi sono più di k-1 allora N aumenta di uno

Codice:
Cont=0;
for j=1:LW
       If isdivisible(V(i),W(j))==1
           Cont++;
        end
End
         if cont>k-1
             N++;
         End
End
 
"Chi è padrone del proprio respiro, è padrone della propria vita."~ Antico proverbio

"La capacità di scegliere è un dono che la natura fa all'uomo. Scegliere è un dono che l'uomo fa a se stesso." D.B.

"Il genio è semplicemente un uomo con la mente da donna." D. B.
dan95
Cannot live without
Cannot live without
 
Messaggio: 2479 di 5268
Iscritto il: 10/06/2013, 16:37
Località: Roma Caput Mundi

Re: [MatLab]

Messaggioda grillo370 » 25/03/2019, 16:29

Non trovo isdivisible su octave, mi dice che non esiste. Chissà ha qualche altro nome?
grillo370
Starting Member
Starting Member
 
Messaggio: 7 di 14
Iscritto il: 13/08/2018, 17:01

Re: [MatLab]

Messaggioda Raptorista » 26/03/2019, 00:33

Prova mod(a,b) == 0 al posto di isdivisible(a,b) == 1.
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 5246 di 9616
Iscritto il: 28/09/2008, 19:58


Torna a Informatica

Chi c’è in linea

Visitano il forum: Google [Bot] e 1 ospite