Форум программистов, компьютерный форум CyberForum.ru

Ускорение алгоритмов - C++

Восстановить пароль Регистрация
 
 
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
23.07.2013, 14:40     Ускорение алгоритмов #1
Имеется код, нужно его ускорить. (Помогите тупому!!!!!!!)
C++
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
#include <stdio.h>
#include <iostream>
#include <string>
#include <stdlib.h>
 
int c (const void* a, const void*b)
{
    return *(int *)a- *(int *)b;
}
 
int main ()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    std::string n;
    std::getline(std::cin, n);
    int m=n.size(), *a=new int [m]; unsigned __int64 i=0, z;
    for( ; m-i; i++) *(a+i)=n[i]-48;
    qsort(a,m,sizeof(int),c);
    if(!*a) goto A;
    __int64 b=1, ch=0, ch1=0;
    for(i=0; m-i; i++, b*=10) ch+=b* *(a+i);
    for(i=m-1, b=1; i+1; i--, b*=10) ch1+=b* *(a+i);
    for(i=2; i*i<=ch || i*i<=ch1; i++) for(z=i*i; z<=ch || z<=ch1; z+=i) if(z==ch || z==ch1) goto A;
    std::cout << "Yes";
    return 0;
A:
    std::cout << "No";
}
Код - решение задачи по ссылке http://********/index.asp?main=task&id_task=516
Программа считывает число, потом записывает числа в массив ,потом сортирует их с помощу QSORT, потом создаю два числа самое маленькое и самое большое с цифр что есть в массиве, потом проверяю их на простоту.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
23.07.2013, 22:37  [ТС]     Ускорение алгоритмов #21
Цитата Сообщение от Dani Посмотреть сообщение
ALEXKIRNAS, этот алгоритм дает ответ, что число 15 будет 2-простым. Этот алгоритм позволяет отсеить некоторые числа, которые заведомо не подходят.
Как же?!?!?!?! Число 15 же не простое (15 - минимальное число составленное из чисел 1 и 5), а за задачей 2-простим называется число у которого минимальное и максимальное значения составленое из его чисел простые.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
23.07.2013, 22:39     Ускорение алгоритмов #22
ALEXKIRNAS, я исправил опечатку, алгоритм лишь отсеивает некоторые числа для ускорения (это предложил BigLow). Я же придерживаюсь того, что код не надо этим усложнять.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2013, 22:48     Ускорение алгоритмов
Еще ссылки по теме:

Ускорение програмки C++
C++ Ускорение проги потоками
Перевести с Delphi на C++. Ускорение умножения двоичных чисел с анализом двух разрядов C++

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

Или воспользуйтесь поиском по форуму:
ALEXKIRNAS
10 / 10 / 2
Регистрация: 27.06.2013
Сообщений: 151
23.07.2013, 22:48  [ТС]     Ускорение алгоритмов #23
Цитата Сообщение от Dani Посмотреть сообщение
Я же придерживаюсь того, что код не надо этим усложнять.
Согласен!!!
Yandex
Объявления
23.07.2013, 22:48     Ускорение алгоритмов
Ответ Создать тему
Опции темы

Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru