Loading documents preview...
TAREA 4 1 Escriba una función conteo(n) que entregue la cantidad de divisores enteros positivos que tiene un número entero dado n. Escriba un programa de prueba que use la función escrita para encontrar cual número entre 1 y 100 tiene más divisores enteros. FUNSION CONTEO
SCRIP EN MATLAB
function [ m ] = funcion_conteo( n ) m=0; for i=1:n if mod(n,i)==0 m=m+1; end end end
clc, clear a=0; for i=1:100 m=funsion_conteo(i); if m<=a m=a disp(i) end end
2 Escriba una función primo(n) para determinar si un número n dado es primo. Escriba un programa de prueba que mediante la función escrita, encuentre los números primos existentes entre 1 y n, siendo n un dato. FUNSION PRIMO function[p]=funcion_primo(n) j=0; %ponemos un acumulador o contador de divisores for i=1:n if mod(n,i)==0 %condiciones; mod es para reciduos de division j=j+1; %se actualiza el contador o numero totales de divisores end end if j==2 %numero de divisores que j acumula p=1; %el numero es primo else p=0; end end
SCRIP EN MATLAB clear,clc; n=input('ingrese el numero superior: '); for i=1:n if funcion_primo(i)==1 j=j+1; disp(i) end end fprintf('hay %d numeros primos \n',j)
3 Escriba una función primo(n) para determinar si un número n dado es primo. Escriba un programa de prueba que use la función primo y encuentre dos números enteros aleatorios menores que 100 tales que su suma sea también un número primo. FUNSION PRIMO EJERCICIO 2
SCRIP EN MATLAB clc,clear; a=0; %valores de prueba b=0; i=1 ; %contador while funcion_primo(a+b)==0 fprintf('intento numero %d \n',i) a=randi(100) %genero el primer numero aleatorio b=randi(100) %genero el segundo numero aleatorio i=i+1; end fprintf('los numeros enteros menores a 100 cuya suma es primo son %d y %d \n',a,b')
4 Escriba una función divisores(n) que entregue un vector conteniendo todos los divisores enteros positivos que tiene un número entero dado n. Escriba un programa de prueba que use la función escrita para encontrar para cada número entero del 20 al 30, sus divisores enteros FUNSION DIVISORES SCRIP EN MATLAB function [ a ] = funcion_divisores( n ) c=0; for i=1:n if mod(n,i)==0 v(i-c)=i; else c=c+1; end end
clear,clc; for i=20:30 a(i)=funcion_divisores(i); fprintf('los divisores de %d son',i) disp(a) end
end
5 Escriba una función mayor(x) que reciba un vector x y devuelva el mayor valor. Escriba un programa de prueba que genere y almacene en un vector n números aleatorios entre 1 y 100. Use la función escrita y encuentre y muestre el mayor valor generado.
FUNSION MAYOR function [ y ] = mayor( x ) n=length(x); m=0; for i=1:n if m<x(i); m=x(i); end y=m; end
SCRIP EN MATLAB clc,clear n=-1; %Indica valores negativos while n<1 n=input('Ingrese el límite de datos: '); a=1; b=100; r=floor(rand(n,1)*(b+1-a)+a) end g=mayor(r) fprintf('El %d es el número mayor entre la fila de 5 numeros aleatorios \n',g)
6 Escriba una función perfecto(n) que determine si un número entero dado n es un número perfecto. Un número perfecto debe ser igual a la suma de todos sus divisores enteros menores que el valor del número. Ejemplo: 28 = 1 + 2 + 4 + 7 + 14 Escriba un programa de prueba que use la función escrita y encuentre los números perfectos entre 1 y 1000
FUNSION PERFECTO function [y] = funcion_perfecto( n ) c=0; for i=1:(n-1) if mod(n,i)==0 c=c+i; end end if n==c y=1;%ES PERFECTO else y=0;%NO ES PERFECTO end
SCRIP EN MATLAB
funcion_perfecto(28) ans = 1
7 Escriba una función suma(n) que entregue la suma de las cifras de un número dado n. Con esta función escriba un programa que genere 10 números aleatorios entre 1 y 100 y encuentre cual de ellos tiene la mayor suma de sus cifras.
FUNSION SUMA function [ y ] = funcion_suma( x ) i=0; y=0; while x~=0 y=y+mod(x,10); x=(x-mod(x,10))/10; i=i+1; end end
SCRIP EN MATLAB clear, clc; n=input('ingrese la cantidad de aleatorios a generar n='); a=round(100*rand(1,n)+1) s=a(1:n)
8 Escriba una función cuad(n) que determine si el cuadrado de un número natural n dado, es igual a la suma de los primeros n números impares. Ej. 62 = 1+3+5+7+9+11 Escriba un programa de prueba que ingrese un dato desde el teclado, use la función y muestre el resultado en la pantalla.
FUNSION CUADRADO function [cuad] = funsion_cuad( n ) suma=0; i=0; while i
SCRIP EN MATLAB clear,clc; n=input('ingrese el numero superior: '); for i=1:n if funcion_primo(i)==1 j=j+1; disp(i) end end fprintf('hay %d numeros primos \n',j)
disp('la suma es: '); disp(suma); if suma==n^2 disp('si cumple la condicion'); else end end
11 Escriba una función sim(x) que reciba un entero y determine si es simétrico, es decir si los dígitos opuestos alrededor del centro son iguales. Escriba un programa de prueba que genere números aleatorios entre 1 y 10000 hasta obtener un número que sea simétrico
FUNSION SIM function [ y ] = funsion_sim( n ) a=1; cont=0; cont1=0; x=n; while (n>=1) punto=mod(n,10); vect(a)=punto; n=fix(n/10); a=a+1; end a=a-1; b=a; for i=1:a k(i)=vect(a); a=a-1; end a=b; if mod(a,2)==0 mitad=a/2; for i=1:mitad if k(i)==k(a) a=a-1; cont=cont+1; end end if mitad==cont y=1; fprintf('es simetrico el numero %d',x); else y=0; fprintf('no es simetrico el numero %d',x); end else mitad=fix(a/2); for i=1:mitad if k(i)==k(a) a=a-1; cont1=cont1+1; end end if mitad==cont1 y=1 fprintf('es simetrico el numero %d',x); else y=0 fprintf('no es simetrico el numero %d',x); end end
SCRIP EN MATLAB clc,clear n=fix(rand*10000)+1 y=sim(n)
15 Escriba una función fact(n) que reciba un numero entero n y devuelva su factorial. Escriba un programa de prueba que genere un número aleatorio entero menor que 8, use la función y muestre la suma de los factoriales de los primeros k números naturales
FUNSION FACT function [f] = funcion_fact(n) f=1; for i=1:n f=f*i; end end
SCRIP EN MATLAB j=fix(8*rand) a=funcion_fact(j) j1=fix(8*rand) b=funcion_fact(j1) j2=fix(8*rand) c=funcion_fact(j2) j3=fix(8*rand) d=funcion_fact(j3) j4=fix(8*rand) e=funcion_fact(j4) j5=fix(8*rand) f=funcion_fact(j5) j6=fix(8*rand) g=funcion_fact(j6) j7=fix(8*rand) h=funcion_fact(j7) sumafact=a+b+c+d+e+f+g+h
16 Escriba una función suma(n) que reciba un numero entero n y devuelva la suma de sus dígitos. Escriba un programa de prueba que genere números aleatorio entre 1 y 100 hasta que la suma de los dígitos de alguno de ellos sea múltiplo de 7
FUNSION SUMA function [ y ] = suma( n ) y=0; for i=1:n; y=y+i; end end
SCRIP EN MATLAB clear,clc; for a=1:10 for i=fix(100*rand)+1; s=suma(i); if s*(mod(s,7))==0; y=s; fprintf('El numero aleatorio es:%d; la suma de sus digitos es:%d, y es multiplo de 7\n',i,s) end end end
17 Escriba una función sumad(n) que reciba un número entero n y devuelva la suma de sus divisores. Escriba un programa de prueba que ingrese un dato desde el teclado, use la función y muestre el resultado en la pantalla FUNSION SUMAD
SCRIP EN MATLAB
function [ sum ] = funcion_sumad(n) sum=0; for i=1:n if mod(n,i)==0 a(i)=i; sum=sum+a(i); end end end
clear,clc; n=input('ingrese numero') sum=suma(n)
18 Escriba una función mcd(a, b) que reciba dos números enteros a y b, y devuelva el máximo común divisor entre ellos. Escriba un programa de prueba que genere dos números aleatorios entre 1 y 100, use la función y muestre el resultado en la pantalla FUNSION MCD2 function [ m ] = funcion_mcd2( a,b ) m=gcd(a,b); end
SCRIP EN MATLAB clear,clc; a=input('ingrese el numero mayor entero: '); b=input('ingrese el numero menor entero: '); m=funcion_mcd2(a,b); disp('maximo comun divisor'); disp(m)
19 Escriba una función primos(v) que reciba un vector v y entregue otro vector conteniendo los elementos que son números primos. function [ x ] = funcion_primo2( v ) div=0; c=0; n=lenght(v) for i=1:n a=v(i) for j=1:a if mod(a,j)==a div=div+1 end end if div==2 x(i-c)=a else c=c+1 end end
20 Escriba un a función rango(v, a, b) que reciba un vector v, y determine cuantos elementos están enend el rango [a, b] function [ y ] = funcion_rango( v,a,b ) n=length(v); y=[]; for i=1:n [r,p]=min(v(i:n)); t= v(i); v(i)=v(p+i-1); v(p+i-1)=t; end for i=1:n if mod(v(i),1)==0 y=[y,v(i)]; y=i-2; end end end