You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

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
    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
    fprintf('Har nå funnet: %d primtall\n', length(primeList));
    primeList = getPrimeList2(100, primeList);
    savePrimes(primeList);
end
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', 'a');
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
  • No labels