N325 ClosedXml
I denne opgave skal du skabe en samling primtal op til 10.000 og gemmes disse en i Excel-fil (primtal.xlsx). Du kan selv skrive en metode til at finde primtal - eller bruge min
// Jeg får altså ikke 12 for metode til at finde primtal
// men den virker. Burde nok bruge yield og iøvrigt se
// nærmere på https://stackoverflow.com/questions/1042902/most-elegant-way-to-generate-prime-numbers
public static List<int> FindPrimtal(int tilVærdi)
{
List<int> listeAfPrimtal = new List<int>();
bool erPrimtal = true;
for (int i = 2; i <= tilVærdi; i++)
{
for (int j = 2; j <= tilVærdi; j++)
{
if (i != j && i % j == 0)
{
erPrimtal = false;
break;
}
}
if (erPrimtal)
{
listeAfPrimtal.Add(i);
}
erPrimtal = true;
}
return listeAfPrimtal;
}
Du kan benytte NuGet-pakken ClosedXml til at skabe et Excel-ark. Se dokumentation eller brug dette som inspiration:
using (var workbook = new XLWorkbook())
{
var ws = workbook.Worksheets.Add("Data");
ws.Cell(1, 1).Value = "Celle A1";
ws.Cell(1, 2).Value = "Celle B1";
workbook.SaveAs(@"c:\temp\primtal.xlsx");
}
Klik for at se et forslag til en løsning
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using ClosedXML.Excel;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
using (var workbook = new XLWorkbook())
{
var primTal = FindPrimtal(100000);
var ws = workbook.Worksheets.Add("Primtal");
ws.Cell(1, 1).Value = "#";
ws.Cell(1, 2).Value = "Primtal";
for (int row = 0; row < primTal.Count; row++)
{
ws.Cell(row + 2, 1).Value = row + 1;
ws.Cell(row + 2, 2).Value = primTal[row];
}
var rngHeaders = ws.Range("A1:B1");
rngHeaders.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
rngHeaders.Style.Font.Bold = true;
workbook.SaveAs(@"c:\temp\primtal.xlsx");
}
}
// Jeg får altså ikke 12 for metode til at finde primtal
// men den virker. Burde nok bruge yield og iøvrigt se
// nærmere på https://stackoverflow.com/questions/1042902/most-elegant-way-to-generate-prime-numbers
public static List<int> FindPrimtal(int tilVærdi)
{
List<int> listeAfPrimtal = new List<int>();
bool erPrimtal = true;
for (int i = 2; i <= tilVærdi; i++)
{
for (int j = 2; j <= tilVærdi; j++)
{
if (i != j && i % j == 0)
{
erPrimtal = false;
break;
}
}
if (erPrimtal)
{
listeAfPrimtal.Add(i);
}
erPrimtal = true;
}
return listeAfPrimtal;
}
}
}