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

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

新規登録して質問してみよう
ただいま回答率
85.50%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

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

Q&A

解決済

1回答

634閲覧

コンテナを利用した素因数分解

tokutoieiee

総合スコア2

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

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

0グッド

0クリップ

投稿2021/05/03 10:35

前提・実現したいこと

コンテナを利用して素因数分解を行いたい。

エラーメッセージ Runtime error #stdin #stdout 0s 5372KB ### 該当のソースコード C++ ソースコード #include<iostream> #include<vector> #include<cmath> std::vector<int> prime_factors(int n){ std::vector<int> nums={}; int cnt=0; for(int i=2;i<=std::sqrt(n);++i){//素因数を順番に格納しておく while(n%i==0){ nums[cnt]=i; cnt++; n/=i; } } if(n!=1)nums[cnt]=n;//もし素数だった場合のために確認 return nums; } int main(void){ int num;//numを素因数分解する std::cin>>num; std::vector<int> factors = prime_factors(num); } ### 試したこと Runtime errorと出たので無限ループに陥っていないかの確認 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

変数numsは空のvectorです。なのでnums[cnt]などは常に存在しない要素へのアクセスとなり当該assertが出ているものと思われます。

std::vectorへの要素追加は一般にpush_back/emplace_backというメンバー関数を用います。これらを使うことで今回の場合変数cnt自体が不要ですね。
https://cpprefjp.github.io/reference/vector/vector/push_back.html


質問文が読みづらいのでmarkdownのコードを書く記法を用いて書くようにしてください。

投稿2021/05/03 10:40

yumetodo

総合スコア5850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問