Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2018, 01:13   #1
Александр121
Форумчанин
 
Регистрация: 17.09.2017
Сообщений: 265
По умолчанию Изменить программу так, чтобы на экран выводились все простые числа меньшие N

Изменить программу так, чтобы на экран выводились все простые числа меньшие N
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp14
{



    class Program
    {
        static bool Prim(int j)
        {
            int k = 2; //первое простое число
                       //значение k «пробегает» последовательность простых чисел, начиная с 2 до корня из j, при
                       //этом проверяется делится ли j на одно из таких простых чисел
            while (k * k <= j && j % k != 0)
                k = NextPrim(k); //вызов метода NextPrim
            return (j % k == 0) ? false : true;
        }

        static int NextPrim(int i)
        {
            int p = i + 1;
            while (!Prim(p))    //вызов метода Prim
                ++p;
            return p;
        }

        static void Main()
        {
            Console.Write("n=");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine("Следующее за {0} простое число равно {1}.", n, NextPrim(n));
        }
    }
}
Александр121 вне форума Ответить с цитированием
Старый 09.10.2018, 10:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Александр121 Посмотреть сообщение
чтобы на экран выводились все простые числа меньшие N
ну и где у Вас УМЕНЬШЕНИЕ?


Цитата:
Сообщение от Александр121 Посмотреть сообщение
Код:
int p = i + 1;
...
            Console.WriteLine("Следующее за {0} простое число равно {1}.", n, NextPrim(n));
код проверки на простоту у Вас УЖАСНЫЙ. Зачем Вы туда вставили рекурскию? Рекурсию использовать нужно только там, где она реальна нужна.
а просто так её дергать крайне не рекомендуется!

сравните:
Код:
namespace PrimeNumbers
{
	class Program
	{
		static bool isPrime(int j)
        {
			if(j<2)
				return false;
			if(j==2)
				return true;
            int k = 2;
            while (k * k <= j && j % k != 0) k++;
            return (j % k != 0);
        }

		public static void Main(string[] args)
		{
            Console.Write("n=");
            int n = int.Parse(Console.ReadLine());
            Console.Write("Простые числа меньшие {0}:", n);
            for(int i=2; i<n; i++)
            	if (isPrime(i)) Console.Write(" {0}", i);
            
			Console.Write("\nPress any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распечатать все простые сдвоенные числа, меньшие N. (Delphi) KotoRU Помощь студентам 5 08.10.2014 18:43
изменить программу так, чтобы она выводила на экран таблицу факториалов от 0 до 15 nobo Qt и кроссплатформенное программирование С/С++ 5 09.06.2014 10:20
(Си)Определить все простые числа, меньшие чем N 77Jan77 Помощь студентам 2 02.11.2012 10:22
Прошу откорректировать данную программу так, чтобы на печать выводились результаты в виде обычного (курсивного) шрифта Windows или IZOPGRAM Паскаль, Turbo Pascal, PascalABC.NET 3 09.06.2012 18:35