Простая программа, которую я написал в C, занимает полтора часа для запуска. Я удивлен тем, что C будет так долго работать, потому что из того, что я могу найти в Интернете, C (кроме C++ или Java) является одним из самых быстрых языков.C Программа неожиданно замедляется
// this is a program to find the first triangular number that is divisible by 500 factors
int main()
{
int a; // for triangular num loop
int b = 1; // limit for triangular num (1+2+3+......+b)
int c; // factor counter
int d; // divisor
int e = 1; // ends loop
long long int t = 0; // triangular number in use
while(e != 0)
{
c = 0;
// create triangular number t
t = t + b;
b++;
// printf("%lld\n", t); // in case you want to see where it's at
// counts factors
for(d = 1 ; d != t ; d++)
{
if(t % d == 0)
{
c++;
}
}
// test to see if condition is met
if(c > 500)
{
break;
}
}
printf("%lld is the first triangular number with more than 500 factors\n", t);
getchar();
return 0;
}
Предоставленный программа работает через много данных, но ни один из них не всегда сохраняются, только испытания и перешел.
Я использую Tiny C Compiler на Windows 8.
Есть причина, это работает так медленно? Что было бы более быстрым способом достижения такого же результата?
Спасибо!
Почему это помечено java/C++? –
[Project Euler] (http://projecteuler.net/problem=12) решениям, как правило, требуется математическая проницательность для оптимизации программы. ** 'PRO_TIP:' ** Если вы не знаете математической проницательности, по крайней мере используйте метод [Binary Search] (http://en.wikipedia.org/wiki/Binary_search_algorithm). Лучшая помощь, которую я могу дать, не испортив решение для вас. –
@LaszloPapp Внутри цикла есть «break;». –