1. class Uppgift1 {
      public static int factorial(int n) {
        // n antas vara positiv
        int res = 1;
        for (; n > 1; n--) {
          res *= n;
        }
        return res;
      }
    
      public static void main(String[] args) {
        int k = Integer.parseInt(args[0]);
        for (int i = 1; i <= k; i++) {
          System.out.println(factorial(i));
        }
      }
    }
  2. class Uppgift2 {
      public static boolean isPrime(int n) {
        // n antas vara positiv
        for (int i = 2; i < n; i++) {
          if (n % i == 0) return false;  // n är delbar med i
        }
        return true;
      }
    
      public static void main(String[] args) {
        int n = Integer.parseInt(args[0]);
        if (isPrime(n)) {
          System.out.println("primtal");      
        } else {
          System.out.println("ej primtal");
        }
      }
    }
  3. class Uppgift3 {
      public static double maxDoubles(double[] a) {
        double max = a[0];  // a antas vara icke-tom
        for (int i = 1; i < a.length; i++) {
          if (a[i] > max) max = a[i];
        }
        return max;
      }
    
      public static boolean allDoublesEqual(double[] a) {
        double x = a[0];  // a antas vara icke-tom
        for (int i = 1; i < a.length; i++) {
          if (a[i] != x) return false;
        }
        return true;
      }
    
      public static void main(String[] args) {
        double[] argnums = new double[args.length];
    
        for (int i = 0; i < args.length; i++) {
          argnums[i] = Double.parseDouble(args[i]);
        }
    
        if (allDoublesEqual(argnums)) {
          System.out.println("alla tal lika");
        } else {
          System.out.println("maxvärde: " + maxDoubles(argnums));
        }
      }
    }
  4. public static int[] reverse(int[] a) {
      int[] b = new int[a.length];
    
      for (int i = 0; i < a.length; i++) {
        b[a.length - 1 - i] = a[i];
      }
    
      return b;
    }
  5. class Uppgift5 {
      public static void main(String[] args) throws Exception {
        String str = new String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(args[0])));
    
        String[] strs = str.split(",");
        int[] nums = new int[strs.length];
    
        for (int i = 0; i < strs.length; i++) {
          nums[i] = Integer.parseInt(strs[i]);
        }
    
        for (int i = 0; i < nums.length - 1; i++) {
          if (nums[i + 1] < nums[i]) {
            System.out.println(nums[i + 1] + " är mindre än " + nums[i]);
            return;
          }
        }
        System.out.println("sekvensen är växande");
      }
    }
  6. Programmet skriver ut:

    9 7 3 
    

    Metoden f byter plats på två element i en array, i det fallet elementen med index 0 och 2 i a.

  7. class Uppgift7 {
      public static int fibonacci(int k) {
        // Denna direkta implementering av definitionen
        // är alldeles för långsam.
        if (k < 3) {
          return 1;
        } else {  // k >= 3
          return fibonacci(k - 1) + fibonacci(k - 2);
            // rekursiva anrop
        }
      }
    
      public static int fibonacci2(int k) {
        // Räkna istället ut alla tal upp till fk
        // från första till sista genom att hela
        // tiden hålla reda på två efterföljande
        // värden.
        int i = 0;  // föregående värde
        int j = 1;  // aktuellt värde
        for (; k > 1; k--) {
          int tmp = j;
          j = i + j;
          i = tmp;
        }
        return j;
      }
    
      public static void main(String[] args) {
        int k = Integer.parseInt(args[0]);
        System.out.println(fibonacci2(k));
      } 
    }