Показать сообщение отдельно
Старый 02.04.2017, 09:55   #1 (permalink)
Defx
Новичок
 
Регистрация: 06.03.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию С# Найти сумму всех простых чисел, не превосходящих заданного числа n

первая программа работает, но необходимо реализовать программу в базисе схем с процедурами.
вторая программа считает сумму только при N=3, помогите разобраться почему при N>3 отказывается работать программа

Основная программа:

Код:
namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите число\n");
            int N = int.Parse(Console.ReadLine());
            int a = 2;
            int S = 0; 
            while (a <= N)
            {
                int p = 1; 

                int i = 2;
                while (i <= a / 2)
                    {
                        if (a % i == 0)
                            {
                                p = 0;
                                break;
                            }
                        i = i + 1;
                    }
                
                if (p==1)
                    {
                        S = S + a;
                    }
                
                a = a + 1;
            }

            Console.WriteLine("Сумма простых чисел " + S);
            Console.ReadKey();
        }
    }
}
Программа в базисе схем с процедурами:

Код:
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите число N");
            int N = int.Parse(Console.ReadLine());

            int a = 2;
            int s = 0;
            int p = 0;
            int i = 0;

            int v = F2(a, s, p, i, N);
        }

        static int F2(int a, int s, int p, int i, int N)
        {
            int c;
            int p1;
            int i1;
            if (a <= N)
            {
                p1 = 1;
                i1 = 2;
                c = F3(a, s, p1, i1, N);
            }
            else {
               c = s;
               Console.WriteLine("Сумма простых чисел " + c);
               Console.ReadKey();
            }
            return c;
        }

        static int F3(int a, int s, int p, int i, int N)
        {
            int d;
            p = 1;
            i = 2;
            if (i <= a / 2)
            {
                d = F4(a, s, p, i, N);
            }
            else
            {
                d = F5(a, s, p, i, N);
            }
            return d;
        }

        static int F4(int a, int s, int p, int i, int N)
        {
            int q;
            int h;
            if (a % i == 0)
            {        
               q = F3(a, s, p, i, N);
            }
            else
            {
                h = i + 1;
                q = F5(a, s, p, h, N);
            }
            return q;
        }

        static int F5(int a, int s, int p, int i, int N)
        {
            int f;
            int s1;
            int a1;
            if (p == 1)
            {
               s1 = s + a;
               a1 = a + 1;
               f = F2(a1, s1, p, i, N);
            }
            else
            {
                a1 = a + 1;
                f = F2(a1, s, p, i, N);
            }
            return f;
        }
    }
}
Defx вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070