Gå til innhold

Anbefalte innlegg

Ser ikke helt hva du vil jeg skal gjøre Geirgrusom. Du ba meg unngå å bruke divisjon/modulus, og det gjorde jeg.

Hvis du har et forslag til en annen måte å gjøre det på, så for all del, vis meg det.

Koden uten double.parse:

double primeCheck = 0;
Bool noPrime = false;
Int []thePrimeNums;
double halfi;
double halfi2;
double i;

for ( i=1; i<10000;i++)
{
halfi=Math.Floor(i*0.5);
halfi2=i*0.5;
if (i!=2 && halfi2-halfi==0)
{
noPrime=true;
}
else
{
For (primeCheck = Math.Floor(i*0.5) ; primeCheck>0; primeCheck-2)
{
If((i%primeCheck)==0)
{
if (primeCheck == 1)
{}
else
{
noPrime = true;
break;
}
}
}
}
If (noPrime==true)
{}
Else
{
thePrimeNums+=i + “, ”;
noPrime=false;
}
}

Endret av Velena
Lenke til kommentar
Videoannonse
Annonse
Ser ikke helt hva du vil jeg skal gjøre Geirgrusom. Du ba meg unngå å bruke divisjon/modulus, og det gjorde jeg.

Hvis du har et forslag til en annen måte å gjøre det på, så for all del, vis meg det.

Koden uten double.parse:

 

Jeg mener ikke å fornærme deg eller noe, men her er mitt forslag:

 

private static long[] CalculatePrimes()
{
 // Partall er uansett ikke primtall, de kan deles på 2
 List<long> result = new List<long>();
 for (long i = 1; i < 5e4; i += 2)
 {
long check_count = i / 2;
bool is_prime = true;
// Start fra halvparten
for (long j = 3; j <= check_count; j+=2)
// Sjekk om dette er primtall
  if (i % j == 0)
  {
	is_prime = false;
	break;
  }
if (is_prime)
  result.Add(i);
 }
 return result.ToArray();
}

 

edit: oppdaterte koden litt; er ikke nødvendig å sjekke partall i innerste løkken heller.

Endret av GeirGrusom
Lenke til kommentar

mens vi er inne på presentasjon av forslag:

Klikk for å se/fjerne innholdet nedenfor

static long[] GetFactors(long n)
	{
		List<long> factors = new List<long>();
		long MAX = (long) Math.Ceiling(Math.Sqrt(n));
		bool FactorAddedInLoop = false;

		if ((n % 2) == 0)
		{
			factors.Add(2);
			n /= 2;
		}

		for (long x = 3; x <= MAX;)
		{
			FactorAddedInLoop = false;
			if ((n % x) == 0)
			{
				factors.Add(x);
				n /= x;
				if ((n % 2) == 0)
				{
					factors.Add(2);
					n /= 2;
				}
				x = 3;
				FactorAddedInLoop = true;
			}
			else
				x += 2;
		}

		if (!FactorAddedInLoop && n != 1)
			factors.Add(n);

		return factors.ToArray();

returnerer et array med alle faktorene. funker fint opp til 15-sifrede tall hvertfall.

Endret av hockey500
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...