NUMEROS PRIMOS FORMA 1

NUMEROS PRIMOS FORMA 1

Inicializa lo que será el array de primos con los valores [1 2] (que son los primeros primos seguros) y un escalar que será el candidato y en primer lugar será el 3. Entonces por un bucle while mientras que no tengas los primos que quieres. Por ejemplo, si n es el número de primos que necesitas y primos es el array será: candidato=3; while length(primos)<n ... más cosas ... candidato=candidato+1; end Dentro de este while tienes que poner un for para que compruebe si el candidato es divisible por alguno de los primos que ya tienes excepto el 1. Creo que para hacer el resto se usa la función mod (mira en la ayuda). Por ejemplo: esprimo=0; for i=2:length(primos) if mod(candidato,primos(i))==0 esprimo=1; end if esprimo primos=[primos candidato]; end end

m. if n==1 out=1. % while length(prime)~=n val=val+2. . fac=length(factor(val)). return end % % Incializa variables.m y guárdala con el mismo nombre de la función. prime=(1:3). if fac==1 prime(i+1)=val. i=i+1. cópiala tal cual en un fichero . sólo tienes que teclear en la ventana de comandos de matlab. firtsprime. en la carpeta Work.NUMEROS PRIMOS FORMA 2 Bien. i=3. Por ejemplo: >> p = firtsprime(12) debería mostrar algo como esto: p= 1 2 3 5 7 11 13 17 19 23 29 31 Espero que te sirva! Aquí va la función: function out=firtsprime(n) % % Visualiza primeros tres números primos en caso que el argumento de % entrada sea menor a 3. aqui te dejo la función que resuelve ese problema. end end out=prime. val=3. % % Inicializa primeros 3 numeros primos. en este caso. Para probar la función. el nombre de la función con el argumento de entrada que indica cuantos números primos se quiere visualizar. return end % if n==2 out=(1:2).

100).OTRA FORMA FUNCTION PRIMO(n: INTEGER):BOOLEAN. nsum = 10. tStart = tic. b = rand(n. tic.REPS). INC(i). END. VAR contador.1). WHILE (i <= n) DO BEGIN IF ((n MOD i) = 0) THEN INC(contador). BEGIN contador:=0. minTime = min(tElapsed. for i=1:REPS minTime = Inf. i: INTEGER. end tElapsed = toc(tStart). PRIMO:=true. tic x = A\b. t(n) = toc. IF (contador > 2) THEN primo:=FALSE. for j=1:nsum. total = total + besselj(j. end plot(t) Measure the minimum and average time to compute a summation of Bessel functions: REPS = 1000. minTime). . end averageTime = toc/REPS. END.n). i:=1. {FIN_PRIMO} t = zeros(1. for n = 1:100 A = rand(n. total = 0.

') else disp('El número dado no es primo. i=2.int &sw) { if(i<=(x/2) && sw==0) { if(x % i ==0) { sw=1.') disp('De hecho.i+1. primo=1.i)==0 % Resto de dividir n entre i primo=0.n=input('Número natural que deseas saber si es primo '). break end i=i+1. es divisible por:') disp(i) end RECURSIVO primo(int x.int &i. } else { primo=primo(x. while i<=sqrt(n) if rem(n.sw). // aquí hago la asignación } primo=sw. end if primo disp('El número dado es primo. return } .

Sign up to vote on this title
UsefulNot useful