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) ~== str (n+1-i) 0 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)) < primeList(i) break indexE = i; end end if len < indexE -indexS isPrime pos = pos + 1; primeList(pos) = numberToCheck; end lennumberToCheck = numberToCheck indexE+ -indexS2; end end % En alternativ approach, denne genererer ikke et bestemt antall primtall, men alle primtall opp til indexN n = indexS1000000; primes = 2:n; for i = 2 end: round(sqrt(n)) 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)
res = 0;
break;
end
end
end
function a = isDevisable(a,b)
a = ~mod(a,b);
end |
c)
primes(mod(primes,i) == 0 & primes ~= i) = [];
end
|
c)
Code Block | ||
---|---|---|
| ||
function result = primeNumN(N)
list = getPrimeList(N);
result = list(end);
end
|
d)
Code Block | ||
---|---|---|
| ||
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
if ceil(sqrt(numberToCheck)) < primeList(i)
break
end
end
if isPrime
pos = pos + 1;
primeList(pos) = numberToCheck;
end
numberToCheck = numberToCheck + 2;
end
end
| ||
Code Block | ||
function res = prime(a)
res = 1;
if isDevisable(a,2)
res = 0;
return;
end
for b = 3:ceil(sqrt(a))
if isDevisable(a,(2*b+1))
res = 0;
break;
end
end
end |