Største primtallsfaktor i tall

Like dokumenter
Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Læringsmål og pensum. Oversikt

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Datastrukturer (kap. 8)

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Øvingsforelesning TDT4105 Matlab

Binærfiler versus tekstfiler

Læringsmål og pensum

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

TDT4105 Informasjonsteknologi, grunnkurs

Oppsummering fra sist

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4105 Informasjonsteknologi, grunnkurs Matlab: Betinget programutførelse (valg: IF og SWITCH) og løkker (FOR)

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Pensum: Starting out with Python

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

O-notasjon og kompleksitet

Palindrom - iterativt

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

Læringsmål og pensum. if (be): else (not_to_be):

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Læringsmål og pensum. Oppgave

Øvingsforelesning i Matlab TDT4105

Øvingsforelesning i Matlab TDT4105

TDT4105 Informasjonsteknologi, grunnkurs - Foreleser 1: MTBYGG, MTIØT, MTKJ, MTMART, MTMT, MTPROD

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Øvingsforelesning TDT4105 Matlab

TDT4105 IT Grunnkurs Høst 2016

Øvingsforelesning i Matlab (TDT4105)

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Øvingsforelesning 1 Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2015

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

Øvingsforelesning i Matlab (TDT4105)

En innføring i MATLAB for STK1100

MAT1030 Plenumsregning 1

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

TDT4110 IT Grunnkurs Høst 2016

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

Python: Lister og tupler Gaddis: Kapittel 7

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Øvingsforelesning i Matlab TDT4105

MAT1030 Diskret Matematikk

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Læringsmål og pensum. v=nkiu9yen5nc

TALLÆRE UKE 34. Rest. Hvis vi deler a med b og det ikke går opp har vi rest som er mindre enn b.

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 4. Iver Dihle Skjervum Vit.ass. ITGK

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

FAKTORISERING FRA A TIL Å

Programmering Høst 2017

Øvingsforelesning TDT4105 Matlab

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Transkript:

1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Uke 40: Gjør ferdig problemløsning (faktorisering) Vektorisering Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf: 735 91845 TDT4105 IT G 1 Uke40-Matlab - 25. september 2015 2 Største primtallsfaktor i tall Alle positive heltall kan faktoriseres i primtallsfaktorer 6 = 3 * 2 99 = 11 * 3 * 3 Vi skal lage en funksjon maxprimtallfaktor som finner den største primtallsfaktoren til et heltalltall Ide: Fjerner de mindre faktorene til vi står igjen med en faktor, som er den største 2 Uke40-Matlab - 25. september 2015

3 Pseudokode Input: n hvis n = 1 maxfaktor = 1 ellers faktor = 2 gjenta så lenge n >= faktor hvis faktor deler n % fjerner faktor n = n/faktor ellers % må prøve neste tall faktor = faktor + 1 slutthvis sluttgjenta maxfaktor = faktor 3 Uke40-Matlab - 25. september 2015 4 Flytskjema 4 Uke40-Matlab - 25. september 2015

5 maxprimtallfaktor.m 5 Uke40-Matlab - 25. september 2015 6 Programkjøringer maxprimtallfaktor(99) n settes lik 99 f settes lik 2 (de to if-klausulene feiler) 99 >= 2 så vi går inn i while-sløyfa mod(99,2) er ikke lik 0 så vi hopper til else f økes med en og blir 3 99 >= 3 så vi fortsetter i while-sløyfa mod(99,3) er lik 0, så vi utfører if n blir da 99/3, altså 33 33 >= 3 så vi fortsetter i while-sløyfa mod(33,3) er lik 0, så vi utfører if n blir da 33/3, altså 11 11 >= 3 så vi fortsetter i while-sløyfa mod(11,3) er ikke lik 0, så vi hopper til else f økes med 1 og blir 4 11 >= 4 så vi fortsetter i while-sløyfa mod(11,4) er ikke lik 0, så vi hopper til else f økes med 1 og blir 5 osv 6 Uke40-Matlab - 25. september 2015

7 33 = 11 * 3 16 = 2 * 2 * 2 * 2 Primtallsfaktorisering Kan bruke maxprimtallfaktor som byggekloss siden den finnes den største primtallfaktoren Utfør denne flere ganger til det bare står et primtall igjen Lagre de enkelte faktorene i en vektor 7 Uke40-Matlab - 25. september 2015 8 primtallfaktorisering(99) n settes lik 99 nestefaktornr settes lik 1 n ~=1 så if-klausulen feiler restavn settes lik 99 99 > 1 så vi går inn i while-sløyfa v(1) settes lik 11 (maxprimtallfaktor(99)) restavn settes lik 9 (99/11) nestefaktornr settes lik 2 9 >= 1 så vi fortsetter i while-sløyfa v(2) settes lik 3 (maxprimtallfaktor(9)) restavn settes lik 3 (9/3) nestefaktornr settes lik 3 3 >= 1 så vi fortsetter i while-sløyfa v(3) settes lik 3 (maxprimtallfaktor(3)) restavn settes lik 1 (3/3) nestefaktornr settes lik 4 1 = 1 så while-sløyfa er slutt v er nå lik [11 3 3] 8 Uke40-Matlab - 25. september 2015

9 Eksempelkjøringer 9 Uke40-Matlab - 25. september 2015 10 Læringsmål Vektorisering av kode Enkel og effektiv kode i Matlab Utnytte mulighetene i Matlab Bruk av innebygde operatorer på tabeller Pre-allokering av tabell-variabler Pensum Matlab-boka kapittel 2 og 5.4 Læringsmål og pensum 10 Uke40-Matlab - 25. september 2015

11 Vektorisering Skrive eller skrive om kode slik at den blir enklere og/eller mer effektiv Bruke tabelloperasjoner + -.*.^./ <, >, Funksjoner med tabeller som input Prøver å unngå brukerskrevne løkker Pre-allokering av vektorer og matriser Billigere minnehåndtering 11 Uke40-Matlab - 25. september 2015 12 vektorisering_0.m 12 Uke40-Matlab - 25. september 2015

13 Relasjonsoperatorene Fungerer elementvis på hele vektorer/tabeller Gir en logisk vektor/tabell som resultat 13 Uke40-Matlab - 25. september 2015 14 Noen innebygde funksjoner sum sum(<vektor>) -> summen av elementene sum(<matrise>) -> kolonnesummer cumsum Kumulative summer max (min) max(<vektor>) -> største element max(<matrise>) -> max element i hver kolonne find(<betingelse>) I vektor: Indeksene I matrise: Lineær indeks (1. kolonne, 2. kolonne, ) 14 Uke40-Matlab - 25. september 2015

15 Eksempler vektorisering_4.m 15 Uke40-Matlab - 25. september 2015 16 vektorisering_1.m 16 Uke40-Matlab - 25. september 2015

17 vektorisering_2.m 17 Uke40-Matlab - 25. september 2015 18 Preallokering av plass Allokering vil si å avsette plass til en variabel i minnet Tabeller som vokser gradvis er svært lite effektivt Finne ny plass Kopiere gamle verdier til ny plass Lønner seg å sette av nødvendig plass (pre-allokering) zeros(n), zeros(n,m) ones(n), ones(n,m) true(n), true(n,m) / false(n), false(n,m) logiske verdier 18 Uke40-Matlab - 25. september 2015

19 Kumulative summer vektorisering_3.m 19 Uke40-Matlab - 25. september 2015