Extrauppgifter 2

1. Skriv en funktion bool isprime(int $tal) som tar emot ett tal och undersöker om det är ett primtal. Om det är ett primtal skall funktionen returnera true annars false. Utgå från att det endast kommer godkända värden till funktionen. Du skall använda funktionen i följande program.

$antal = 100;
echo "Detta är alla primtal mellan 2 och " . $antal . "\n";
$i=2;
while ($i <= $antal) {
  if(isprime($i)){
     echo $i . "\n";
  }
  $i++;
}

2. I ett samboförhållnade hade det i många år varit prat om att man skulle gifta sig. När ämnet än en gång togs upp (2002-12-03) sade mannen i huset att han hade som enda villkor att han skulle gifta sig ett datum och klockslag där alla tal var primtal. a. Skriv ett program som listar alla rimliga datum som är primtal. Utgå från att mannen var 36 år. Obs! år, månad och dag skall vara primtal. b. Skriv ett tillägg som listar alla klockslag som är primtal.

Du skall använda dig av din funktion isprime()

I exemplet ovan så skrev mannen ett program som listade alla godkända datum och den blivande frun fick välja. De gifte sig i Arnäs kyrka 2003-07-05 kl 13.59 och är idag mycket lyckligt gifta. Inte undra på…

3. Skriv en funktion double my_sqrt(double $tal) som beräknar ett närmevärde till roten ur ett tal, du skall använda följande enkla algoritm:

IN A
X = A/2
upprepa 10 ggr
    X = (A/X + X)/2
UT X

Funktionen skall användas av ett program.

4. Du skall göra om funktionen så att man skickar med hur många gånger man skall upprepa double my_sqrt(double $tal, int $n) Pröva med lite oilka tal för att se hur många gånger som är lämpligt för att få att värde som kan anses som ok.

5. Skriv ett program som läser in ett tal och faktorisera det i primtal.

6. Skriv ett program som hittar alla perfekta tal under 10 000 (4 st).
Ett perfekt tal är ett heltal som är större än 1 och som är summan av sina delare.
Som delare räknas talet 1 in, men naturligtvis inte talet självt (då hade de perfekta talen definierats bort).
Exempel: 6 är ett perfekt tal eftersom det är delbart med 1, 2 och 3 och summan av dessa är just 6.

Det finns flera olösta gåtor angående de perfekta talen:
- Man vet inte om det finns ändligt eller oändligt många perfekta tal.
- Hittills har alla perfekta tal man hittat slutat på 6 eller 28. Men ingen har lyckats visa om alla perfekta tal gör det.
- Hittills har man inte lyckats hitta något udda perfekt tal. Men det är inte bevisat att det inte finns några sådana.
- 2005 känner man till 42 perfekta tal.

7. Vad kommer följade program att skriva ut?

<?php
function printname($name, $n) {
    if($n<1) {
      return 0;
    }
    printname($name,$n-1);
    echo $name  . " n = " . $n . "\n";
}
 
printname("Joakim",3);

8. Ett program ska “rita” en diamant vars storlek bestäms av ett inmatat positivt heltal.

Programkörnings exempel:
Diamantens storlek: 5
       ¤
      ¤ ¤
     ¤ ¤ ¤
    ¤ ¤ ¤ ¤
   ¤ ¤ ¤ ¤ ¤
    ¤ ¤ ¤ ¤
     ¤ ¤ ¤
      ¤ ¤
       ¤

9. Gör ett program som läser in ett tal (max 5000) och skriver ut talet med romerska siffror. Kan ju vara klokt att googla lite om hur det egentligen funkar…

Skriv in ett tal: 9
Blir med romerska siffror: IX
Skriv in ett tal: 49
Blir med romerska siffror: XLIX (Ej IL)
Skriv in ett tal: 1999
Blir med romerska siffror: MCMXCIX (Ej MIM)
Skriv in ett tal: 445
Blir med romerska siffror: CDXLV (Ej CDVL)

10. UPPGIFT 1 – KANINER (uppgift nr1 ur kval till PO 2003)
Kaniner är bra på att föröka sig. I den här uppgiften tänker vi oss att det finns obegränsat med hannar och att inga kaniner dör. Vi ska försöka simulera hur många kaninhonor det finns efter varje månad om det vid tiden 0 finns en enda nyfödd kaninhona. Vi antar att det tar x månader innan varje kaninhona är könsmogen och att hon från och med denna ålder (x månader) varje månad föder en kull innehållande y kaninungar av honkön.
Indata: Programmet ska fråga efter honornas könsmognadsålder x; <m>1 ⇐ x ⇐ 5</m>, samt antal honor per kull y; <m>1 ⇐ y ⇐ 5</m>.
Utdata: Programmet ska skriva en rad för varje månad under totalt 10 månader
Exempel:

Könsmognadsålder ? 2
Honor per kull ? 1
Efter 1 m: 1
Efter 2 m: 2
Efter 3 m: 3
Efter 4 m: 5
Efter 5 m: 8
Efter 6 m: 13
Efter 7 m: 21
Efter 8 m: 34
Efter 9 m: 55
Efter 10 m: 89

Förklaring: Från början finns 1 nyfödd hona, låt oss kalla henne Lisa. Efter 1 månad är Lisa fortfarande ensam. Efter 2 månader har Lisa fått en kull. Efter 3 månader finns 3 honor eftersom Lisa fått ytterligare en kull. Efter 4 månader finns 5 honor eftersom både Lisa och hennes första unge har fått varsin kull med en hona i varje.