DEL 1
a)
Code Block | ||
---|---|---|
| ||
function resresult = isPalindrome ( str ) n = size (str , 2); resisPrime(N) result = true; if N == 1 result = false; elseif N <= 3 && N~=1 result = true ; else for ia =1: n 2:(N-1) if str (imod(N, a) ~== 0 str (n+1-i) resresult = false; return; breakend end end end |
b)
Code Block | ||
---|---|---|
| ||
function resprimeList = sequenceFinder (sequence,start,stop ) len = 0; index = 0; getPrimeList(N) primeList = zeros(1, N); % preallokerer primeList(1) = 2; pos = 1; numberToCheck = 3; while primeList(end) == 0 isPrime = true; for i = 1:length(sequence)-length(stop) : pos if (length(start) <= length(sequence(i:end))) && strcmp(start,sequence(i:i+length(start)-1)) if mod(numberToCheck, primeList(i)) == 0 indexS isPrime = ifalse; elseif (length(stop) <= length(sequence(i:end))) && strcmp(stop,sequence(i:i+length(start)-1)) break end if ceil(sqrt(numberToCheck)) indexE =< primeList(i;) if len < indexE -indexSbreak end end len = indexEif -indexS;isPrime pos = pos + 1; indexprimeList(pos) = indexSnumberToCheck; end end numberToCheck = numberToCheck + 2; end end res = sequence(index:index+len+length(stop)-1); end |
Eventuelt kan den lages litt enklere ved hjelp av matlabs strfind() funksjon.
DEL 2
a)
Code Block |
---|
function a = isDevisable(a,b)
a = ~mod(a,b);
end |
b)
Code Block |
---|
function res = prime(a) res = 1; for b = 2:a-1 if isDevisable(a,b % En alternativ approach, denne genererer ikke et bestemt antall primtall, men alle primtall opp til N n = 1000000; primes = 2:n; for i = 2 : round(sqrt(n)) res primes(mod(primes,i) == 0; & primes ~= i) = break[]; end end end function a |
c)
Code Block | ||
---|---|---|
| ||
function result = isDevisableprimeNumN(a,bN) list = a getPrimeList(N); result = ~modlist(a,bend); end |
cd)
Code Block | ||
---|---|---|
| ||
function resprimeList = primemainPrimes(a) resprimeList = 1loadPrimes(); if isDevisable(a,2)while true resterminate = 0; return; end for b = 1:2:ceil(sqrt(a)) input('Vil du avslutte programmet(Y) eller finne 100 primtall til(N)\n', 's'); if isDevisablestrcmp(a,bterminate, 'Y') break; res = 0;end primeList = breakgetPrimeList2(100, primeList); fprintf('Har nå funnet: %d primtall\n', length(primeList)); end savePrimes(primeList); end end |
d) og e)
Code Block |
---|
les function primeList = loadPrimes() primeList = []; fid = fopen('primprimes.txt', 'r'); ifpos les= ==-11; while ~feof(fid) break; end Aline = fscanf(les,'%f'fgetl(fid); if isempty(A) % Om filen er tom skriver vi '2' inn i den. x = 2; A(1)= 2; skriv primeList(pos) = str2num(line); pos = pos + 1; end end function savePrimes(primeList) fid = fopen('primprimes.txt', 'w'); for i = 1:length(primeList) fprintf(skrivfid, '%20f%d\r\n',x primeList(i)); end fclose(fid); end else % I Ellerstillegg skrivermå vi innmodifisere alt, skrivgetPrimeList2-funksjonen, slik at den kan ta inn lister. function primeList = fopen('prim.txt','w'); x = A(end); fprintf(skriv, '%20f\r\n',A); end while (length(A) < 1500200)getPrimeList2(N, primeList) pos = length(primeList); numberToCheck = primeList(end) + 2; primeList = [primeList, zeros(1,N)]; while primeList(end) == 0 isPrime x = x + 1true; for i=1; prime = 1; while sqrt(x)>= A(i): pos if x/A mod(numberToCheck, primeList(i)) == floor(x/A(i))0 primeisPrime = 0false; break; end if ceil(sqrt(numberToCheck)) < primeList(i) i = i+1; endbreak end end if primeisPrime % Legger det tilpos i= listen,pos og til filen.+ 1; primeList(pos) fprintf(skriv, '%20f\r\n',x)= numberToCheck; end AnumberToCheck = [A; x]numberToCheck + 2; end end fclose('all'); |