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

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

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

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

8941閲覧

Visual Studioで「error C3861:lcm識別子が見つかりません」とエラーが出る

sumikko6210

総合スコア138

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/07/21 13:34

前提・実現したいこと

C++で最大公倍数を求めたく、lcm関数を使いたいのですが、
Visual Studioでエラーが出てしまいます。

発生している問題・エラーメッセージ

エラー C3861 'lcm': 識別子が見つかりませんでした

該当のソースコード

C++

1#include <iostream> 2#include <numeric> 3#include <string> 4#include <vector> 5#include <algorithm> 6#include <sstream> 7#include <iterator> 8#include <math.h> 9 10 11using namespace std; 12 13 14int main() { 15 16 int n, f, x, max; 17 vector<int> v; 18 cin >> n; 19 for (int i = 0; i < n; i++) 20 { 21 cin >> x; 22 v.push_back(x); 23 } 24 25 for (int i = 0; i < v.size(); i++) { 26 27 if (v.at(i) % v.at(i+1) != 0) 28 max = lcm(v.at(i), v.at(i+1)); 29 } 30 31 cout << max << endl; 32} 33 34

試したこと

include <numeric>も行っており、どうしてlcmが識別されないのか
検討も尽きません・・・
よろしくお願いいたします

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/07/23 23:02

最大公倍数?間違いかと。
guest

回答3

0

ベストアンサー

コンパイル・オプション: /std:c++17 つけてる?

それとココまちがい。

C++

1 for (int i = 0; i < v.size(); i++) { 2// ↑ at(i+1) してるんだから、v.size()-1 じゃないと。 3 if (v.at(i) % v.at(i+1) != 0) 4 max = lcm(v.at(i), v.at(i+1)); 5 }

投稿2018/07/23 10:17

編集2018/07/23 22:51
episteme

総合スコア16614

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

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

pepperleaf

2018/07/23 13:52

コンパイルオプションで、OKみたいです。(Visual stdio 2017 .. 今月Update) もっとも手元で実行したら、何も出力しなかった。 追ってみたいけど、暑いのと時間が無いので、パス。
episteme

2018/07/23 22:52

15.7.x ならいけるっポ
guest

0

lcm()はC++17の機能です。
VS2017のヘッダーファイルを検索してみましたがlcm()は出てこないので、サポートしてないかもしれないですね。

まあ、最小公倍数なので、自分で組むかネットを探して落ちているコードを使えば良いのでは?

もし、boostが使えるのならboost::mathにlcmやgcdがあります。

boostjp - 数学

投稿2018/07/23 08:15

編集2018/07/23 08:25
PineMatsu

総合スコア3579

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

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

0

Visual studio のバージョンはいくつでしようか?

サポートは最近のようです。
Visual Studio 2017 バージョン 15.0、15.3、15.5、15.6、15.7 での C++ 準拠の改善

投稿2018/07/21 13:44

pepperleaf

総合スコア6383

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

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

sumikko6210

2018/07/21 15:53 編集

ご回答ありがとうございます。 VisualStudioのバージョンは15.0です 一度最新バージョンに挙げてみます
sumikko6210

2018/07/23 05:49

追記 15.7にアップデートしたのですがエラー直りませんでした・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問