Hirdetés
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sh4d0w: StarWars: Felismerés
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Meggyi001: Kórházi ellátás: kuka vagy finom?
- GoodSpeed: Nem vénnek való vidék - Berettyóújfalu
- eBay-es kütyük kis pénzért
- Brogyi: CTEK akkumulátor töltő és másolatai
- NASsoljunk: ZyXEL NSA-310 és az FFP
Új hozzászólás Aktív témák
-
ArchElf
addikt
folyt.
prímszámítás kommentezve:private static bool isPrimeWithCountNew(Int64 szam)
{
Console.WriteLine("Osztoi:");
// Lista az osztók tárolására
List<long> osztok = new List<long>();
int result_x;
// Ha nem nyilvántartott prímszám akkor elkezdjük keresni
if ((result_x=GetPBit(szam)) != 1)
{
// keresési érték = kezdőérték
// elsőször egyenlő a számmal
long bc = szam;
// prím keresés első lépésének inicializálása
Int64 ix = 2;
// Addig iterálunk, míg minden gyököt meg nem találunk,
// vagy a sor végére nem érünk
while (true)
{
// amennyiben a keresési érték prímszám eltároljuk és kilépünk a ciklusból
// ez nem lehet az eredetileg keresett szám,
// mert akkor az előző feltételnél nem jutottunk volna be ide
if (GetPBit(bc) == 1)
{
osztok.Add(bc);
break;
}
// a négyzetgyökének veszzük a keresési kezdőértéknek
// kezdeti eseben az első iteráció a kezdeti szám négyzetéig keres
// ha eddig nincs találat a szám prímszám és > UInt32
long sq = (long)Math.Floor(Math.Sqrt(bc));
// ha a keresési kezdőérték prím és a négyzete kiadja a
// a keresett keresési kezdőértéket
// kétszer berakjuk a listába és kilépünk a ciklusból
if ((sq * sq == bc) && (GetPBit(sq) == 1))
{
osztok.Add(sq);
osztok.Add(sq);
break;
}
// osztási sort elkezdjük, addig megyünk,
// amíg a négyzetgyököt el nem érjük
bool mul = false;
while (ix <= sq)
{
int result;
// amennyiben az ix (keresési lépés) prímszám,
// megpróbálunk osztani vele
if ((result = GetPBit(ix)) == 1)
{
// ha sikerül az osztás maradék nélkül,
// a keresési kezdőértéket elosztjuk a
// keresési lépéssel és újrakezdjük külső ciklust
// a találta osztót a listához adjuk
// megjelöljük, hogy volt sikeres osztás
if (bc % ix == 0)
{
bc /= ix;
mul = true;
osztok.Add(ix);
break;
}
}
// amennyiben az keresőszámhoz tartozó tartományban (8 szám - 1 byte)
// nincs prím, úgy előre lépünk 8-at
if (result == -1)
ix = (((ix >> 3) + 1) << 3);
// minden más esetben növeljük a keresőszámot 1-el
else
ix++;
}
// ha nem találtunk osztót
if (!mul)
{
// ha a keresőszám != a keresett számmal,
// akkor a keresőszám > UInt32 és prím
// hozzáadjuk a listához
if (bc != szam)
osztok.Add(bc);
// kilépünk a külső ciklusból
break;
}
}
}
if (osztok.Count == 0)
{
Console.WriteLine("nincsenek");
return true;
}
else
{
Console.WriteLine("{0} prímtényezőre osztható, melyek a következők:", osztok.Count);
foreach (long l in osztok)
Console.Write("{0} ", l);
Console.WriteLine();
return false;
}
}
}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Nokia 8 Sirocco / 6/128GB / Kártyafüggetlen / 12Hó Garancia
- Apple iPhone 12 Mini 64GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! ASRock B450M R5 2600X 16GB DDR4 512GB SSD GTX 1050Ti 4GB AIGO B352A Chieftec 400W
- Honor X6a 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A50 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

