Вход на сайт
знатокам С#
12.04.09 21:39
Последний раз изменено 13.04.09 16:11 (monstrello72)
Такой вопрос: я начал недавно изучать С# и вначале все шло вроде понятно(я изучаю его On-Line), но следующая программа(составленная авторами) должна выдавать простые числа от 1 до 100(2, 3, 5, 7, 11, 13, 17, 19, 23, и т.д.) , а она выдает все наборот (все составные числа). Подскажите пожалуйста как исправить эту программу???!!!!!! Заранее спсибо!!!
P.S. код в PDF формате -ниже
P.S. код в PDF формате -ниже
NEW 12.04.09 21:58
в ответ monstrello72 12.04.09 21:39
Ты в самом начале устанавливаешь IsPrimeNumber на true и потом нигде это значение не изменяешь. Поэтому тебе выдаются все числа, у которых при делении в остатке иногда бывает 0.
ps. Ненужно делить на все числа от 1 до i-1, достаточно делить только на те, которые меньше квадратного корня из i.
ps. Ненужно делить на все числа от 1 до i-1, достаточно делить только на те, которые меньше квадратного корня из i.
NEW 12.04.09 22:54
в ответ Кот Дивуар 12.04.09 22:48
Еще подсказка, но уже в целях оптимизации кода:
1. после строчки Console.WriteLine ЗА скобкой "}" вставь оператор break, тогда цикл будет прерываться сразу после того, как обнаружится, что число составное.
2. переменную j изменяй не от i-1 до 1, а от 1 до sqrt(i).
1. после строчки Console.WriteLine ЗА скобкой "}" вставь оператор break, тогда цикл будет прерываться сразу после того, как обнаружится, что число составное.
2. переменную j изменяй не от i-1 до 1, а от 1 до sqrt(i).
NEW 12.04.09 23:04
в ответ monstrello72 12.04.09 22:55
Это обычный оператор присваивания "=".
В самом начале цикла ты присваиваешь переменной IsPrimeNumber значение true. И потом это значение НИГДЕ не изменяешь. Понятно, что условие if(IsPrimeNumber == true) всегда оказывается верным.
Там похоже еще надо кое-что менять. Мне щас лень, если честно, соображать. Завтра может быть.
В самом начале цикла ты присваиваешь переменной IsPrimeNumber значение true. И потом это значение НИГДЕ не изменяешь. Понятно, что условие if(IsPrimeNumber == true) всегда оказывается верным.
Там похоже еще надо кое-что менять. Мне щас лень, если честно, соображать. Завтра может быть.
NEW 13.04.09 12:11
в ответ monstrello72 12.04.09 23:19, Сообщение удалено 13.04.09 12:13 (monstrello72)
NEW 13.04.09 22:08
в ответ monstrello72 13.04.09 12:12
А так должно быть правильно( я в предпоследнем if блоке знак ! поставил)? Но ответ всеравно не получается!!!
NEW 14.04.09 00:56
в ответ monstrello72 13.04.09 22:08
Не должно быть правильно, потому что последний блок if всегда выдает положительный результат, т.к. IsPrimeNumber всегда равно true. Ты же его нигде не изменяешь.
См. файл. Так должно вроде работать, хотя на работоспосбность не проверял.
См. файл. Так должно вроде работать, хотя на работоспосбность не проверял.
NEW 14.04.09 02:43
в ответ Кот Дивуар 14.04.09 00:56
Так должно вроде работать
------
Не, не будет... точнее - будет выдавать много лишнего или пропускать нужное.
Последняя проверка должна быть во внешнем цикле, работа с флажком - начинаться там же.
Лучшее, что можно посоветовать - найти описание самого алгоритма - решето Эратосфена. (?)
P.S. Тонкости - проверка только нечетных, проверка только простых в качестве делителей - опущены...
------
Не, не будет... точнее - будет выдавать много лишнего или пропускать нужное.
Последняя проверка должна быть во внешнем цикле, работа с флажком - начинаться там же.
Лучшее, что можно посоветовать - найти описание самого алгоритма - решето Эратосфена. (?)
P.S. Тонкости - проверка только нечетных, проверка только простых в качестве делителей - опущены...
NEW 14.04.09 19:40
У меня получилось следующее . Но выдает консоль пустую строку(Drücken beliebige Taste)
NEW 14.04.09 20:30
в ответ Murr 14.04.09 20:09
Я вообщето новичек, изучаю С# по интернету http://simple-cs.ru/store/csharp/7/, но я хочу добиться того , что было в уроке по циклическим операторам- выведение ПРОСТЫХ чисел. Т.е. я скопировал из урока код на С# и хочу что бы мне в консоли выдался список простых чисел-2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97. Короче я хочу написать программу по выведению этих чисел.
NEW 14.04.09 20:59
в ответ monstrello72 14.04.09 20:30
Короче я хочу написать программу по выведению этих чисел.
------
Следующее делает именно то, что ты написал, но это явно не то, что тебе нужно.
------
Следующее делает именно то, что ты написал, но это явно не то, что тебе нужно.
class Program
{
static int[] values = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 };
static void Main(string[] args)
{
foreach (int value in values)
Console.WriteLine("{0}", value);
}
}