You are on page 1of 4

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 nmero de primos que necesitas y primos es el array ser: candidato=3; while length(primos)<n ... ms 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 funcin 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

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

OTRA FORMA FUNCTION PRIMO(n: INTEGER):BOOLEAN; VAR contador, i: INTEGER; BEGIN contador:=0; i:=1; PRIMO:=true; WHILE (i <= n) DO BEGIN IF ((n MOD i) = 0) THEN INC(contador); INC(i); END; IF (contador > 2) THEN primo:=FALSE; END; {FIN_PRIMO} t = zeros(1,100); for n = 1:100 A = rand(n,n); b = rand(n,1); tic x = A\b; t(n) = toc; end plot(t)

Measure the minimum and average time to compute a summation of Bessel functions:

REPS = 1000; tic; for i=1:REPS

minTime = Inf;

nsum = 10;

tStart = tic; for j=1:nsum,

total = 0;

total = total + besselj(j,REPS); end tElapsed = toc(tStart); minTime = min(tElapsed, minTime); end averageTime = toc/REPS;

n=input('Nmero natural que deseas saber si es primo '); i=2; primo=1; while i<=sqrt(n) if rem(n,i)==0 % Resto de dividir n entre i primo=0; break end i=i+1; end if primo disp('El nmero dado es primo.') else disp('El nmero dado no es primo.') disp('De hecho, es divisible por:') disp(i) end

RECURSIVO
primo(int x,int &i,int &sw) { if(i<=(x/2) && sw==0) { if(x % i ==0) { sw=1; } else { primo=primo(x,i+1,sw); // aqu hago la asignacin } primo=sw; return }

You might also like