LINUX.ORG.RU

Проблема в коде

 


0

1

Нашел ошибку в своем коде из предыдущей темы

#include <iostream>

int main()
{
    int j;
    for(int i=0;i<4000000000;i++)
        if(i%2!=0 && i%3!=0 && i%5!=0 && i%7!=0)
            j=i;    
    std::cout << j <<"\n";
}
-диапазон делиться пополам это не беззнаковый тип. Чуть больше 2х миллиардов диапазон.А у меня тут 4.
#include <iostream>
#include <thread>
#include <ctime>
#include <cassert>
std::time_t result;
void hello(const std::time_t *result)
{
    int j;
    char buffer[32];
    std::strncpy(buffer, std::ctime(result), 26);
    assert('\n' == buffer[std::strlen(buffer) - 1]);
    std::cout << buffer;
    for (int i = 0; i < 2000000000; i++)
        if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0)
            j = i;
    std::time_t result_ = std::time(nullptr);
    std::cout << std::ctime(&result_);
    std::strncpy(buffer, std::ctime(&result_), 26);
    assert('\n' == buffer[std::strlen(buffer)-1]);
    std::cout << buffer;
}
int main()
{
    result = std::time(nullptr);
    std::cout << std::ctime(&result);
    std::thread t(hello,&result);
    t.join();
}
Вот такой лучше работает

Нашел ошибку в своем коде из предыдущей темы

Какой именно темы?
Где история вопроса?

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

Там где оставили этот комментарий

Ну а что, с БИОСами же такое прокатывало.

bad_master
() автор топика
Ответ на: комментарий от slackwarrior

Щас начнется

Да начнется я тупанул как-то

не в коде

Да код невиноват, а что говорит стандарт? Видимо надо экстерн и линковка

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 2)

Ну что же один байт символьного типа для числа. Пойдем по классике без вникания во всякий бред в виде библиотек готовых. 617*617~=381000 знаков. в сумме строка займет 382000 знаков. Предположим что это верхняя граница. Остается узнать сколько чисел между 1 знаком и 381000 знаков.

А если не искать разложение числа N на множители, а пробежаться по итерации в диапазоне от (sqrt(N)-eps)(sqrt(N) - eps)< (sqrt(N)+eps)(sqrt(N) - eps)<(sqrt(N)-eps)(sqrt(N) + eps)<(sqrt(N)+eps)(sqrt(N) + eps)->==N и так проверить есть ли произведение двух простых чисел, а если нет то увеличить диапазон eps

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.