02.04.2017, 09:55 | #1 (permalink) |
Новичок
Регистрация: 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; } } } |
02.04.2017, 09:55 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Я думаю, что проблему решать легче есть набраться больше информации Найти из всех четырехзначных чисел... Для заданного ε>0 и заданного Х вычислить сумму ряда Для заданного ε>0 и заданного x вычислить сумму ряда с точностью ε Найти произведение чисел, меньших заданного числа b Задача о выводе на экран простых чисел |
02.04.2017, 10:23 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Эх, так и поленился СИ выучить...
Но, хоть в Сях ни бельмеса не понимаю, но что-то мне не нравится функция F3. А именно присвоение в её теле принудительных значений формальным параметрам p и i. Это так и задумано? |
02.04.2017, 13:54 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
У Вас зациклен вызов функций: F3 вызывает F4, а F4 вызывает F3. Так и задумано? Попытался отладить Вашу программу, переведя на Паскаль, но на этом моменте транслятор взбунтовался. Не помогает даже перегон функций в модули. |
|
02.04.2017, 16:55 | #5 (permalink) |
Новичок
Регистрация: 06.03.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Возможно и не должно =) вот графовая и линейная форма первой программы, может тут где накосячил =(
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|