Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clearvars; clc; close all;
- %Define se um numero n é primo ou não
- function P = definirprimo (num)
- for i = 2:sqrt(num)
- if (mod(num, i) == 0)
- P = false;
- return;
- endif
- endfor
- P = true;
- endfunction
- %Define se um número n é perfeito ou não
- function PERF = definirperfeito (ent)
- listatest = zeros(1, ent);
- i = 1;
- while i <= ent / 2
- if (mod(ent, i) == 0)
- listatest(i) = i;
- endif
- i += 1;
- endwhile
- if sum(listatest) == ent
- PERF = true;
- else
- PERF = false;
- endif
- endfunction
- %Obtém os números perfeitos até o valor desejado, no caso 4
- perfeitosdesejados = 4;
- perfencontrados = 0;
- perfeitos = zeros(perfeitosdesejados, 1);
- n = 1;
- while perfencontrados < perfeitosdesejados
- if definirperfeito(n) == true
- perfencontrados += 1;
- perfeitos(perfencontrados) = n;
- endif
- n += 1;
- endwhile
- display(perfeitos);
- %Obtém a quantidade de números primos anteriores ao número perfeito desejado
- primotestando = perfeitos(perfencontrados);
- numprimos = 0;
- while primotestando > 1
- if (definirprimo(primotestando) == true)
- numprimos += 1;
- endif
- primotestando -= 1;
- endwhile
- display(numprimos);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement