Gå till innehållet

Lösningsförslag till uppgift 7.25

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Uppgift_7._25
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Detta menyprogram handlar om primtal");
            string användarensVal = "";
            while (användarensVal != "3")
            {
                SkrivMeny();
                användarensVal = Console.ReadLine();
                Console.WriteLine();

                switch (användarensVal)
                {
                    case "1":
                        MenyÄrPrimtal();
                        break;
                    case "2":
                        MenyAntalPrimtal();
                        break;
                    case "3":
                        // Gör ingenting, programmet stängs av
                        break;
                    default:
                        Console.WriteLine("Du valde ett ogiltigt alternativ");
                        break;
                }
                Console.WriteLine();
            }
        }

        /// <summary>
        /// Skriver ut programmets meny
        /// </summary>
        static void SkrivMeny()
        {
            Console.WriteLine("Välj ett alternativ");
            Console.WriteLine("1. Är n ett primtal?");
            Console.WriteLine("2. Antal primtal mindre än n");
            Console.WriteLine("3. Avsluta programmet");
        }

        /// <summary>
        /// Hanterar menyalternativet Är n ett primtal
        /// </summary>
        static void MenyÄrPrimtal()
        {
            Console.WriteLine("Skriv in ett heltal");
            int tal = int.Parse(Console.ReadLine());
            if (ÄrPrimtal(tal))
            {
                Console.WriteLine($"{tal} är ett primtal");
            }
            else
            {
                Console.WriteLine($"{tal} är inte ett primtal");
            }
        }

        /// <summary>
        /// Hanterar menyalternativet Antal primtal mindre än n
        /// </summary>
        static void MenyAntalPrimtal()
        {
            Console.WriteLine("Skriv in ett heltal");
            int tal = int.Parse(Console.ReadLine());
            Console.WriteLine($"Antalet primtal mindre än {tal} är {AntalPrimtalMindreÄn(tal)}");
        }

        /// <summary>
        /// Undersöker hur många primtal det finns som är mindre än det angivna talet
        /// </summary>
        /// <param name="gräns"></param>
        /// <returns></returns>
        static int AntalPrimtalMindreÄn(int gräns)
        {
            int antal = 0;

            for (int i = 2; i < gräns; i++)
            {
                if (ÄrPrimtal(i))
                {
                    antal++;
                }
            }

            return antal;
        }

        /// <summary>
        /// Undersöker om ett givet tal är ett primtal
        /// </summary>
        /// <param name="tal"></param>
        /// <returns></returns>
        static bool ÄrPrimtal(int tal)
        {

            for (int i = 2; i < tal; i++)
            {
                // Om vi hittar en delare till talet så är det inte ett primtal
                if (tal % i == 0)
                {
                    return false;
                }
            }

            // Om ingen delare hittades så är talet ett primtal
            return true;
        }
    }
}

Kommentarer