Feuerbach
написал 1 июля 2005 года в 00:42 (707 просмотров)
Ведет себя
как мужчина; открыл 53 темы в форуме, оставил 447 комментариев на сайте.
feuerbach@localhost ~/c/math $ cat foo.c #include #include short prime(unsigned n) { unsigned i,s; if (!(n & 1)) return 0; s = (int)sqrt(n); for (i=1; (i << 1) + 1<=s;i++) if (!(n % ((i << 1)+1))) return 0; return 1; } int main(void) { printf("%d\n",prime(73)); } feuerbach@localhost ~/c/math $ cc foo.c /home/feuerbach/tmp/ccASJQyT.o(.text+0x35): In function `prime': : undefined reference to `sqrt' collect2: ld returned 1 exit status feuerbach@localhost ~/c/math $ c++ foo.c feuerbach@localhost ~/c/math $
То есть c++ она компилится (и линкуется), а cc — нет. Более того, если sqrt вызывается только из main(), то тоже все оки. В чем прикол?
gcc 3.4.1
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Благодарю. А все же, чем принципиально отличаются два случая (когда sqrt вызывается из main и из prime)?
в случае c++ libm притягивается автоматически, так как она используется в нескольких классах.
разницу в месте использования что-то уловить не могу ;)
ps: а sqrt там, на самом деле, лишнее.. :))
А как без него?..
вычитанием. вспомни курс математики школной, прогрессии там.. ;)
Так уж исторически сложилось, что математику я неплохо знаю, а вот с алгоритмами разными и умными я не дружу… Так как же все-таки квадратный корень извлекать вычитанием и прогрессиями?))
тьху ты блин.
ну, представь, что x(n)=n^2 — это у тебя n-ный член прогрессии (эмм.. точнее ряда).
тогда x(n+1)=(n+1)^2=n^2+2n+1=x(n)+2n+1
остальное додумаешь ;)
Гы, дошло %) Что-то в этом есть.