Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. function out = smallest_multiple(n)
  2. tic
  3.  
  4. pra=[1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 137, 173]; %praštevila
  5. %jemlje po vrsti št od 1 do n in jih deli na zmnožek praštevil
  6. mnoz_pra=zeros(2,numel(pra)); %zapise kombinacijo prafaktorjev za trenutno stevilo
  7. mnoz_pra(2,:)=pra; %2. vrsta so prastevila
  8. for a=1:n %vzame število x, ki ga bo razstavljal na prafaktorje
  9. deljitelji=zeros(1,numel(pra));
  10. x=a;
  11. %ustvari prazno množico, kamor bo zapisoval kolikokrat posamezen prafaktor delji x
  12. while x>1 %delji dokler je x večji od 1
  13. for b=numel(pra):-1:1 %šteje praštevila pozadnsko
  14. y=pra(b); %vzame praštevilo
  15. if ~rem(x,y)
  16. deljitelji(1,b)=deljitelji(1,b)+1;
  17. x=x/y;
  18. break
  19. end
  20. end
  21. end
  22. for c=1:numel(pra) %se pomika po vrsti mnozice prafaktorjev
  23. if deljitelji(1,c)>mnoz_pra(1,c) %prepiše, če je blo za št. potrebnih več faktorjev, kot do zdaj
  24. mnoz_pra(1,c)=deljitelji(1,c);
  25. end
  26. end
  27. end
  28.  
  29. stevilo_mnoz=mnoz_pra(2,:).^mnoz_pra(1,:);
  30. stevilo=uint64(prod(stevilo_mnoz(stevilo_mnoz>0))); %računa zmnožek
  31. mnoz=stevilo_mnoz;
  32. if stevilo < 2^64
  33. if n>42
  34.  
  35. out=uint64(stevilo);
  36. return
  37. else
  38. out=uint64(stevilo);
  39. return
  40. end
  41. else
  42. out=uint64(0);
  43. end
  44. toc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement