• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

С# Найти сумму всех простых чисел, не превосходящих заданного числа n

  • Автор темы Автор темы Defx
  • Дата начала Дата начала

Defx

Ученик
Регистрация
6 Мар 2017
Сообщения
3
Реакции
0
Баллы
0
С# Найти сумму всех простых чисел, не превосходящих заданного числа 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;
        }
    }
}
 
Эх, так и поленился СИ выучить...
Но, хоть в Сях ни бельмеса не понимаю, но что-то мне не нравится функция F3. А именно присвоение в её теле принудительных значений формальным параметрам p и i. Это так и задумано?
 
Сорян, не должно их там быть, забыл удалить, это так экспериментировал, без них результат тот же =(
 
Сорян, не должно их там быть, забыл удалить, это так экспериментировал, без них результат тот же =(
Хорошо, тогда еще вопрос.
У Вас зациклен вызов функций: F3 вызывает F4, а F4 вызывает F3. Так и задумано? Попытался отладить Вашу программу, переведя на Паскаль, но на этом моменте транслятор взбунтовался. Не помогает даже перегон функций в модули. tehno015
 
Возможно и не должно =) вот графовая и линейная форма первой программы, может тут где накосячил =(
 

Вложения

  • 20170402_195013.webp
    20170402_195013.webp
    46.3 KB · Просмотры: 216
Назад
Сверху