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) if (length(start) <= length(sequence(i:end))) && strcmp(start,sequence(i:i+length(start)-1)) indexS = i; elseif (length(stop) <= length(sequence(i:end))) && strcmp(stop,sequence(i:i+length(start)-1)) indexE = i; : 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 | ||
---|---|---|
| ||
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 len < indexE -indexSmod(numberToCheck, primeList(i)) == 0 lenisPrime = indexE -indexSfalse; break index = indexS; end if ceil(sqrt(numberToCheck)) < primeList(i) break end end end res if isPrime pos = pos sequence(index:index+len+length(stop)-1); end |
Eventuelt kan den lages litt enklere ved hjelp av matlabs strfind() funksjon.
DEL 2
a)
...
+ 1;
primeList(pos) = numberToCheck;
end
numberToCheck = numberToCheck + 2;
end
end
|