ciao ragazzi ho un problemino riguardo l'implementazione di un "setaccio" per numeri primi.
ecco il codice:
Il problema è nei due for nidificati, dove in teoria dovrei controllare i multipli del primo elemento dell'array ed eliminarli e così via.codice:using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void CrivelloDiEratostene(int LimiteInferiore, int LimiteSuperiore) { ArrayList Crivello = new ArrayList(LimiteSuperiore - (LimiteInferiore-1)); /*Inserisce i valori dell'intervallo immesso all'interno dell'ArrayList*/ LimiteInferiore = Int32.Parse(textBox1.Text); for (int i = 0; i < Crivello.Capacity; i++) { Crivello.Add(LimiteInferiore); LimiteInferiore++; } textBox1.Text = null; textBox2.Text = null; /*Elimina 0 e 1 dalla lista*/ if ((int)Crivello[0] == 1) Crivello.RemoveAt(0); if ((int)Crivello[0] == 0 && (int)Crivello[1] == 1) { Crivello.RemoveAt(0); Crivello.RemoveAt(0); } for (int i = 0; i < Crivello.Count; i++) { for (int j = 1; j < Crivello.Count; j++) { if ((int)Crivello[i] % (int)Crivello[j] > 0) Crivello.RemoveAt(j); } } /*Stampa il contenuto dell'ArrayList su un file txt*/ const string FileName = "Elenco_Numeri_Primi.txt"; using (StreamWriter sw = File.CreateText(FileName)) { sw.WriteLine("Elenco Numeri Primi"); sw.WriteLine(); for (int i = 0; i < Crivello.Count; i++) { sw.WriteLine(Crivello[i]); } sw.Close(); } } private void button1_Click(object sender, EventArgs e) { CrivelloDiEratostene(Int32.Parse(textBox1.Text), Int32.Parse(textBox2.Text)); } } }
ad esempio, se come intervallo inserisco 2 e 6 mi stampa sul file txt solamente 2 e 4... quando in realtà dovrebbe stamparmi 2 3 5.
Penso che il problema riguardi proprio la rimozione dell'indice dell'array, in quanto ogni volta viene ricompattato e quindi con gli indici dei for prefissati in quel modo lo scorro in modo errato... potreste consigliarmi un metodo migliore per farlo o come correggere questo mio errore?

Rispondi quotando

...)
