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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2016, 16:10   #1
fufayka
 
Регистрация: 09.11.2016
Сообщений: 6
По умолчанию Язык С. Простые числа.

Здравствуйте! Помогите, пожалуйста. Нужно уменьшить время выполнения программы, как это можно сделать? заранее спасибо!

Дано n чисел. Для каждого из них определяется, простое ли оно. Если простое, выводится 1, иначе 0.

Код:
#include<stdio.h>

int main()
{
    int n, x, j, i, f;

    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);

    scanf("%d", &n);
    for(i = 0; i < n; i++){
        scanf("%d", &x);
        f = 0;
        for(j = 2; j < x; j++){
            if(x % j == 0) {printf("0\n"); f = 1; break;}
        }
        if(f == 0) printf("1\n");
    }
    return 0;
}
fufayka вне форума Ответить с цитированием
Старый 17.11.2016, 16:17   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Гугли решето Эратосфена
GreenWizard вне форума Ответить с цитированием
Старый 17.11.2016, 16:36   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
Гугли решето Эратосфена
да, думаю, что это оптимально.

ну можно немножко ускорить исходный код, уменьшив количество сравнений - перебирать делители нужно не до x, а до sqrt(x) (корень из x): например, тыц


но, повторю, решето Эратосфена на больших числах должно дать многократный выигрыш.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2016, 18:08   #4
fufayka
 
Регистрация: 09.11.2016
Сообщений: 6
По умолчанию

Спасибо, помогло
fufayka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выписать все простые числа, не превышающие данного числа N. Julia_Sv Паскаль, Turbo Pascal, PascalABC.NET 1 08.03.2016 23:17
Даны натуральные числа a и b (a<b). Получить все простые числа из промежутка от a до b. ( с# ) NastyaShuvalova Помощь студентам 0 16.12.2013 18:08
язык си простые числа Alexandr- Помощь студентам 1 21.04.2013 19:23
Даны целые числа р и q. Получить все делители числа q, взаимно простые c г. Владан Паскаль, Turbo Pascal, PascalABC.NET 2 03.12.2012 23:39
Задачи в ТурбоПаскаль: найти числа Армстронга и просуммировать числа в последовательности номера которых простые числа Lena1808 Помощь студентам 1 17.05.2012 08:00