a)
function boolean = isPrime(N) boolean = true; if N < 3 boolean = false; end for a = 3:2:ceil(sqrt(N)) if mod(N, a) == 0 boolean = false; return; end end end
b)
function primeList = getPrimeList(N) primeList = zeros(1, N); % preallokerer primeList(1) = 2; pos = 1; numberToCheck = 3; while primeList(end) == 0 isPrime = true; for i = 1 : pos if mod(numberToCheck, primeList(i)) == 0 isPrime = false; break end if ceil(sqrt(numberToCheck)) < primeList(i) break end end if isPrime pos = pos + 1; primeList(pos) = numberToCheck; end numberToCheck = numberToCheck + 2; end end
c)
104743.
d)
function primeList = mainPrimes() primeList = loadPrimes(); while true terminate = input('Vil du avslutte programmet(Y) eller finne 100 primtall til(N)\n', 's'); if strcmp(terminate, 'Y') break; end primeList = getPrimeList2(100, primeList); fprintf('Har nå funnet: %d primtall\n', length(primeList)); end savePrimes(primeList); end function primeList = loadPrimes() primeList = []; fid = fopen('primes.txt', 'r'); pos = 1; while ~feof(fid) line = fgetl(fid); primeList(pos) = str2num(line); pos = pos + 1; end end function savePrimes(primeList) fid = fopen('primes.txt', 'w'); for i = 1:length(primeList) fprintf(fid, '%d\n', primeList(i)); end fclose(fid); end % I tillegg må vi modifisere getPrimeList2-funksjonen, slik at den kan ta inn lister. function primeList = getPrimeList2(N, primeList) pos = length(primeList); numberToCheck = primeList(end) + 2; primeList = [primeList, zeros(1,N)]; while primeList(end) == 0 isPrime = true; for i = 1 : pos if mod(numberToCheck, primeList(i)) == 0 isPrime = false; break end end if isPrime pos = pos + 1; primeList(pos) = numberToCheck; end numberToCheck = numberToCheck + 2; end end