質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

4998閲覧

エラーメッセージの解消

sigure666

総合スコア14

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/10/15 07:53

編集2020/10/15 07:53

入力した数字が素数がどうか判定するためのプログラムで以下のコードを組んだところ、

/usr/bin/ld: /tmp/ccuDO85A.o: in function prime': 5.c:(.text+0x15): undefined reference to sqrt'
collect2: error: ld returned 1 exit status

というエラーメッセージ?が表示されてしまいます。
どうしたらエラーが出ないようにできるのでしょうか。

c

1 2#include <stdio.h> 3#include <math.h> 4 5int prime(int x){ 6 int y = sqrt(x), i; 7 if(0 == x%2){ 8 return 0; 9 } 10 if(x<=1){ 11 return 0; 12 } 13 if(2==x){ 14 return 1; 15 } 16 else{ 17 for (i = 3; i < y; i += 2){ 18 if(x % i == 0) 19 return 0; 20 } 21 return 1; 22 } 23 24} 25 26int main(void){ 27 int n; 28 printf("Please enter a number:"); 29 scanf("%d", &n); 30 if(prime(n)){ 31 printf("%d is a prime number\n", n); 32 }else{ 33 printf("%d is not a prime number\n", n); 34 } 35 return 0; 36} 37

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

int y = sqrt(x), i;

そもそもこういう書き方はできません
代入文は別に書きましょう

投稿2020/10/15 07:57

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/10/15 07:59

記法自体に問題はないかと思います。
sigure666

2020/10/15 08:25

書き方自体はおかしくないということでしょうか?
maisumakun

2020/10/15 08:27

そうですね、コードの書き方には問題ありません。コンパイルの仕方の方を調整する必要があります。
sigure666

2020/10/15 08:40

gitpodを使って、gcc -o でコンパイルしてるんですけどこれじゃダメってことですか?
guest

0

ベストアンサー

math.hで読み込む数学ライブラリは、リンク時に別途指定する必要があります。

コンパイラをコマンドとして手で実行するのであれば、それに-lmのような引数を渡す形だと思いますが、正確なコンパイル環境がわからないとなんとも言えません。

投稿2020/10/15 07:57

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sigure666

2020/10/15 08:27

すみません。 リンク時に別途指定とはどういうことでしょうか?
maisumakun

2020/10/15 08:42

gccコマンドを使っているのであれば、gcc -lmのようにオプションを追加すればそれで問題ありません(それが隣家まで伝えられます)。
cateye

2020/10/15 08:42

通常は、cc hoge.c -lm とします。
sigure666

2020/10/15 08:47

成程、ようやく理解できました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問