Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

a)

Code Block
languagenone
function booleanresult = isPrime(N)
boolean
result = true;
if N == 1
    result = false;
elseif N <= 3 && N~=1
    result = true;
else
    for a = 1:2:ceil(sqrt(N)-1) 
        if mod(N, a) == 0
            booleanresult = false;
            return;
        end
    end
end
end

b)

      104743.

c)

code
Code Block
languagenone
function resprimeList = primegetPrimeList(aN)
resprimeList = zeros(1, N);
if isDevisable(a,2)
    res = 0;
    return;
end
for b = 1:2:ceil(sqrt(a)) 
    if isDevisable(a,b)
        res = 0;
        break;
    end
end
end

d) og e)

 % 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
 
% 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))
    primes(mod(primes,i) == 0 & primes ~= i) = [];
end


c)      

     

Code Block
languagenone
function result = primeNumN(N)
list = getPrimeList(N);
result = list(end);
end

d)

Code Block
languagenone
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
Code Block
les = fopen('prim.txt','r');
if les ==-1
    break;
end
A = fscanf(les,'%f');
if isempty(A)  % Om filen er tom skriver vi '2' inn i den.
    x = 2;
    A(1)= 2;
    skriv = fopen('prim.txt','w');
    fprintf(skriv, '%20f\r\n',x);
else %  Ellers skriver vi inn alt,
    skriv = fopen('prim.txt','w');
    x = A(end);
    fprintf(skriv, '%20f\r\n',A);
end
while (length(A) < 1500200)
    
    x = x + 1;
    i=1;
    prime = 1;
    while sqrt(x)>= A(i)
        if x/Amod(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 = numberToCheck [A; x]+ 2;
    end
end
fclose('all');