using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Eratosthenovo_sito { public partial class Form1 : Form { ulong mez; ulong pocet; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { textBox_mez.Text = ""; textBox_mez.Focus(); textBox_prvocisla.Clear(); label_pocet.Visible = false; label_soubor.Visible = false; } private void textBox_mez_KeyPress(object sender, KeyPressEventArgs e) { if (!((e.KeyChar >= 48 && e.KeyChar <= 57) || (e.KeyChar == 8))) { e.KeyChar = Convert.ToChar(0); } } private void button_vymaz_Click(object sender, EventArgs e) { textBox_mez.Text = ""; textBox_mez.Focus(); textBox_prvocisla.Clear(); label_pocet.Visible = false; label_soubor.Visible = false; } private void button_vypocet_Click(object sender, EventArgs e) { pocet = 0; textBox_prvocisla.Clear(); int vypis; string hodnota; if (textBox_mez.Text == "") { MessageBox.Show("Musíte zadat číslo!", "Upozornění", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { try { mez = Convert.ToUInt64(textBox_mez.Text); } catch (OverflowException) { MessageBox.Show("Zadejte prosím menší číslo!", "Varování", MessageBoxButtons.OK, MessageBoxIcon.Warning); textBox_mez.Text = ""; textBox_mez.Focus(); return; } if (mez > 10000000) { MessageBox.Show("Tato metoda je efektivní do 10 000 000! \n Volte prosím menší číslo!", "Informace", MessageBoxButtons.OK, MessageBoxIcon.Information); textBox_mez.Text = ""; textBox_mez.Focus(); return; } else { bool[] sito = new bool[mez + 1]; for (ulong i = 0; i <= mez; i++) { sito[i] = true; //true - je prvočíslo, false - není prvočíslo } sito[0] = false; sito[1] = false; for (ulong j = 2; j <= Math.Sqrt(mez); j++) { if (sito[j] == true) { for (ulong k = j + 1; k <= mez; k++) { if (k % j == 0) { sito[k] = false; } } } } //Výpis prvočísel přímo do textBoxu - POMALÉ vypis = 1; char pad = ' '; for (ulong cisla = 2; cisla <= mez; cisla++) { if (sito[cisla] == true) { hodnota = Convert.ToString(cisla); textBox_prvocisla.AppendText(hodnota.PadLeft(10,pad)); //textBox_prvocisla.AppendText(String.Format(("{0,10}"),hodnota)); vypis++; if (vypis == 5) { textBox_prvocisla.AppendText(Environment.NewLine); vypis = 1; } pocet++; } } // Konec zápisu do textBoxu label_pocet.Visible = true; label_pocet.Text = "Počet prvočísel: " + Convert.ToString(pocet); } } } private void textBox_mez_TextChanged(object sender, EventArgs e) { textBox_prvocisla.Clear(); label_pocet.Visible = false; label_pocet.Text = ""; } private void button_ulozit_Click(object sender, EventArgs e) { SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.InitialDirectory = System.Environment.CurrentDirectory; saveDialog.Filter = "Text File (*.txt)|*.txt"; saveDialog.RestoreDirectory = true; if (saveDialog.ShowDialog() == DialogResult.OK) { string[] createText = new string[pocet]; createText = textBox_prvocisla.Lines; File.WriteAllLines(saveDialog.FileName, createText); label_soubor.Visible = true; label_soubor.Text = "Data byla uložena do souboru \n" + saveDialog.FileName; } else { MessageBox.Show("Data nebyla uložena!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } private void pictureBox1_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("https://www.algoritmy.net/article/65/Eratosthenovo-sito"); } } }