Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/35: Рейтинг темы: голосов - 35, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 4

Найти сумму всех простых чисел, значения которых не превышает n

13.12.2019, 19:09. Показов 6974. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найти сумму всех простых чисел,значения которых не превышает n.
PS. обратите внимание на ограничение по ресурсам.(Обведены числа 1,2,3 вычеркнутая 4, 5, вычеркнутая 6, 7 и т.д.)
(По решету Эратосфена).
Входной файл:10. Выходной файл:17.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2019, 19:09
Ответы с готовыми решениями:

Сумма простых чисел
Помогите чайнику плиз. Нужно найти сумму всех простых чисел от 1 до 50. НО ТОЛЬКО с помощью FOR или While и т.д., но ничего другого сложнее...

Найти количество трехзначных чисел, сумма простых делителей которых кратна 5
Помогите решить задачу в паскале: Найти количество трехзначных чисел, сумма простых делителей которых кратна 5.

Сумма простых дробей.
Написать программу вычисления суммы 1 + 1/2 + 1/3 + … + 1/n для заданного числа n. Результат представить в виде ...

7
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
13.12.2019, 19:53
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var n,i,j,k,a:integer;
    m:array[1..1000] of boolean;//пусть n максимальное=1000
    s:integer;
begin
readln(n);
//разбиваем числа от 2 до n на простые и составные, используя решето Эратосфена
m[1] := false;//число 1 не простое
for i:=2 to n do m[i] := true;//пока все считаем простыми
for i:=2 to round(sqrt(n)) do
for j:=2 to n div i do //перебираем все возможные произведения
m[i*j]:=false;//это составное, будем "выкалывать"
s:=0;
for i:=1 to n do
if m[i] then s:=s+i;
write(s)
end.
1
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 4
14.12.2019, 11:27  [ТС]
ответ получается правильный, только не все тесты проходит, еще выдает ошибки RRRRRR после прохождения
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
14.12.2019, 11:32
А полное условие задачи можете привести?
0
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 4
14.12.2019, 11:41  [ТС]
Входные данные:
Во входном потоке заданно единственное натуральное число n(n<=10в 8 степени).
10

Входные данные:
В выходной поток вывести целое единственное число.
17

Это все дополнение, которое не указывала ранее.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8652 / 4487 / 1669
Регистрация: 01.02.2015
Сообщений: 13,895
Записей в блоге: 12
14.12.2019, 14:21
champangemum, вам нужно решать через решето Эратосфена - вычёркивать кратные простым числам. Каждое очередное найденное простое число суммировать с уже накопленной суммой.

У вас в тексте условия даже подсказка имеется.

Добавлено через 35 минут
Здесь заменить вычисление произведения на сумму и максимальный диапазон.
Найти произведение 20 первых простых чисел
Или для компилятора FreePascal
Как ускорить алгоритм "Решето Эратосфена"?
Построено Решето Эратосфена. Требуется найти такое N, что разница между простыми числами не будет превышать 255

Добавлено через 45 минут
Для проверки использовал https://oeis.org/A034387 и из OEIS https://oeis.org/A034387/b034387.txt
Для FreePascal.
Проверил до 10000, сколько позволяла таблица из OEIS. Надеюсь и выше - тоже правильно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{$BITPACKING ON}
{$mode Delphi}
program Eratosfen;
 
const
  //верхняя граница рассматриваемых кандидатов в простые числа
  Nmax = 1000 * 1000 * 100;
type
  TVector = packed array [0..Nmax] of boolean;
var
  PrimeCandidate, Step, j, LastCandidate: QWord;
  Sieve:  TVector;
  n, Sum: QWord;
begin
  readln(n);
  //инициализация
  Sum := 0;
  if (n > 1) then
  begin
    if (n = 2) then
      Sum := 2
    else
    begin
      if (n = 3) then
        Sum := 5
      else
      begin
        Sum := 5;
        {заполнение решета Эратосфена - сразу "вычёркиваем" чётные числа}
        fillchar(Sieve, sizeof(Sieve), $AA);
        {особые случаи для 0, 1 и 2}
        Sieve[0] := False;
        Sieve[1] := False;
        Sieve[2] := True;
        {особый случай для 3}
        j := 9;
        while j <= n do
        begin
          Sieve[j] := False;
          Inc(j, 6);
        end;
        {заполнение для простых чисел, начиная от 5}
        PrimeCandidate := 5;
        Step := 2;
        LastCandidate := round(sqrt(n)) + 1;
        while (PrimeCandidate <= LastCandidate) do
        begin
          if Sieve[PrimeCandidate] then
          begin
            Inc(Sum, PrimeCandidate);
            j := sqr(PrimeCandidate);
            while (n >= j) do
            begin
              Sieve[j] := False;
              Inc(j, PrimeCandidate);
            end;
          end;
          PrimeCandidate := PrimeCandidate + Step;
          Step := Step xor $6;
        end;
        //суммирование простых чисел, котроые уже не участвуют в вычёркивании
        while (PrimeCandidate <= n) do
        begin
          if Sieve[PrimeCandidate] then
            Inc(Sum, PrimeCandidate);
          PrimeCandidate := PrimeCandidate + Step;
          Step := Step xor $6;
        end;
      end;
    end;
  end;
  writeln(Sum);
end.
1
0 / 0 / 0
Регистрация: 13.12.2019
Сообщений: 4
15.12.2019, 15:26  [ТС]
Ваш код проходит больше тестов, но, увы, всё равно выдает ошибки RRRRRRRRR. Уже не знаю что делать.....
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8652 / 4487 / 1669
Регистрация: 01.02.2015
Сообщений: 13,895
Записей в блоге: 12
15.12.2019, 16:24
Где вы проверяете?
А что такое RRRRRRRR?
Ну не проходит - и ладно. Что за беда?

Добавлено через 23 минуты
Если RRRRRRR - переводится как "неправильный результат", то нужно усложнять программу. Возможно, что сумма для n=10^8 не умещается в QWORD, требуется длинная арифметика.
Тогда попробуйте добавить "длинные вычисления" суммы.

Мне лень, но вы можете найти в OEIS или другом месте таблицу простых чисел в виде текстового файла, выполнить проверку суммы на перевыполнения разрядной сетки типа QWORD. Т.е. подтвердить или опровергнуть это предположение. Побочным эффектом станет файл с эталонными результатами - т.к. я проверял до n=10^4, сколько было в OEIS.

Если же RRRRRRRR - это превышение лимита времени, то у меня нет мыслей.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2019, 16:24
Помогаю со студенческими работами здесь

Составить программу вывода на экран простых чисел их первых N натуральных чисел..
Составить программу вывода на экран простых чисел их первых N натуральных чисел..

С множества чисел [1.n] выделить подмножество простых чисел p таких что p-2, p + 2 - сложные
С множества чисел выделить подмножество простых чисел p таких что p-2, p + 2 - сложные. я вод нашел похожую помогите ее переделать С...

Из множества чисел выделить подмножество простых чисел вида p*q
Из множества чисел выделить подмножество простых чисел вида p*q, где p, q - простые.

Написать программу нахождения всех натуральных чисел, которые можно представить в виде произведения двух простых чисел
Дано натуральное число Р. Написать программу нахождения всех натуральных чисел, не превосходящих Р, которые можно представить в виде...

Вычислить сумму всех составных чисел от 1 до M. Составные числа можно представить в виде произведения нескольких простых чисел
Вычислить сумму всех составных чисел от 1 до M. Составные числа можно представить в виде произведения нескольких простых чисел.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru