Diskuze: Výpis prvočísel, kterými je číslo dělitelné bez nuly

C# .NET .NET (C# a Visual Basic) Výpis prvočísel, kterými je číslo dělitelné bez nuly American English version English version

Avatar
Michal Kosobud:

Ahoj, můžete mi prosím objasnit, jak mám upravit zdroják, aby výpis netrval tak dlouho? :-)
psáno v C#

using System;
using System.Collec­tions.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write­Line("Vložte číslo z intervalu < 10 ; 1 000 000 >");
int a;

while ((!int.TryPar­se(Console.Re­adLine(), out a)) || (a < 10) || (a > 1000000))
Console.Write­Line("Nezadali jste hodnotu z intervalu. Zadejte číslo znovu:");

float mezivypocet = a;
Console.Write­Line("Číslo je dělitelné prvočísly:");

bool prvocislo = true;

for (int i = 2; i <= a; i++)
{
for (int j = 2; j <= a; j++)
{

if (i != j && i % j == 0)
{

prvocislo = false;

}

}

if (prvocislo)
{

mezivypocet = (float)a / (float)i;

if ((mezivypocet % 1) == 0)
{

Console.WriteLine(" {0} ", i);

}

}

prvocislo = true;

}

Console.Write­Line("Pro ukončení stiskněte libovolnu klávesu.");
Console.ReadKey();

}
}
}

Editováno 21.12.2013 13:51
 
Odpovědět 21.12.2013 13:50
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michal Kosobud
Jan Vargovský:

Použí tlačítko vložit zdrojový kód. Tohle ti nikdo luštit nebude.

 
Nahoru Odpovědět 21.12.2013 15:04
Avatar
coells
Redaktor
Avatar
Odpovídá na Michal Kosobud
coells:

Snadno...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Vložte číslo z intervalu <10 ; 1 000 000>");

            int a;
            while (!int.TryParse(Console.ReadLine(), out a) || (a < 10) || (a > 1000000))
                Console.WriteLine("Nezadali jste hodnotu z intervalu. Zadejte číslo znovu:");

            int mezivypocet = a;
            Console.WriteLine("Číslo je dělitelné prvočísly:");

            for (int i = 2; i <= a; )
            {
                if ((a % i) == 0)
                {
                    Console.WriteLine(i);
                    a /= i;
                }
                else
                {
                    i++;
                }
            }

            Console.WriteLine("Pro ukončení stiskněte libovolnu klávesu.");
            Console.ReadKey();
        }
    }
}
Editováno 21.12.2013 15:50
 
Nahoru Odpovědět 21.12.2013 15:49
Avatar
Odpovídá na coells
Michal Kosobud:

a aby mi to vypsalo pouze jednou to prvočíslo a ne třeba 6krát? to udělám jak prosím? :-)

 
Nahoru Odpovědět 5.1.2014 19:56
Avatar
coells
Redaktor
Avatar
Odpovídá na Michal Kosobud
coells:
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Vložte číslo z intervalu <10 ; 1 000 000>");

        int a;
        while (!int.TryParse(Console.ReadLine(), out a) || (a < 10) || (a > 1000000))
            Console.WriteLine("Nezadali jste hodnotu z intervalu. Zadejte číslo znovu:");

        int mezivypocet = a;
        Console.WriteLine("Číslo je dělitelné prvočísly:");

        for (int i = 2; i <= a; i++)
        {
            if ((a % i) == 0)
            {
                Console.WriteLine(i);
                while ((a % i) == 0)
                    a /= i;
            }
        }

        Console.WriteLine("Pro ukončení stiskněte libovolnu klávesu.");
        Console.ReadKey();
    }
}
 
Nahoru Odpovědět 5.1.2014 20:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.