Wątek przeniesiony 2014-12-26 19:11 z C# i .NET przez somekind.

Wykrywanie liczb pierwszych - podstawy

0

Program zawiesza się. Nie wiem o co chodzi. Proszę o pomoc

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

namespace Science_Bitch_
{
    class MainClass
    {
        static void Main(string[] args)
        {
            int rangefrom = Convert.ToInt32(Console.ReadLine());
            int rangeto = Convert.ToInt32(Console.ReadLine());

            for (int i=rangefrom; i<rangeto; i++)
            {
                int z=0;
                for (int j = 0; j < i; j++)
                {
                    double d = i / j;
                    if (d == i / j) z++;
                }
                if (z==2) Console.WriteLine("i");
            }
        }
    } 
2

Program zawiesza się. Nie wiem o co chodzi

Bo nie czytasz błędów.

An unhandled exception of type 'System.DivideByZeroException' occurred in TestConsoleApplication.exe

Additional information: Attempted to divide by zero.

0

Dzięki za pomoc :D

Więc program działa, lecz z liczb pierwszych wykrywa tylko 2. Wiecie może o co chodzi?

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

namespace Science_Bitch_
{
    class MainClass
    {
        static void Main(string[] args)
        {
            int rangefrom = Convert.ToInt32(Console.ReadLine());
            int rangeto = Convert.ToInt32(Console.ReadLine());

            for (int i=rangefrom; i<rangeto; i++)
            {
                int z=0;
                for (int j = 1; j < i+1; j++)
                {
                    double d = i / j;
                    if (d == i / j) z++;
                }
                if (z==2) Console.WriteLine(i);
            }
            Console.ReadKey();
        }
        
    }
} 
0

Ok, już wiem, szwankowało sprawdzanie czy liczba jest pierwsza. Przepraszam za tak głupie pytania, ale jestem początkującym, bardzo młodym programistą :D.

2

Taka podpowiedź: j < i+1 możesz zastąpić j <= i
Jest też coś takiego jak operator % zwraca on resztę z dzielenia, np:

Console.WriteLine(7%3);
Console.WriteLIne(6%2);

output

1
0

dodanie znacznika <code class="csharp"> - @furious programming

0

Ok, dzięki za podpowiedź :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1