- ベストアンサー
課題;素因数分解
a-kumaの回答
- a-kuma
- ベストアンサー率50% (1122/2211)
1)は、つまらないのでパス。 2)は、こんな感じ(効率は、あまり良くないけど)。 #include <iostream.h> int main() { int i = 2, x; cout << "input n:"; cin >> x; while (i <= x) { if ((x % i) == 0) { cout << " " << i; x /= i; } else { ++i; } } cout << endl; return 0; } 3)の前に、再帰版のプログラムはこんな感じ。 include <iostream.h> void pri(int x, int i) { if (x <= 1) return; if ((x % i) == 0) { cout << " " << i; pri(x / i, i); } else { pri(x, i+1); } return; } int main() { int x; cout << "input n:"; cin >> x; pri(x, 2); cout << endl; return 0; } はっきり言って、(この程度のプログラムでは)たいした違いはない、よね。 再帰を使ったからといって、ロジックの見通しが良くなっているわけでも 無いし、却ってメモリ(スタック)を無駄に食うだけ。 あくまでもソフト屋さんの視点での比較なので、学校のレポートで点数を もらえる保証は無いよ ;-) # と言う意味では、「自信あり」とするわけにはいかないか…
関連するQ&A
- 素因数分解する問題?
√1980B の根号がとれる最も小さい自然数Bを求めよ。 上の問題で たぶん素因数分解をすると思うのですが、 素因数分解してそのあとがよくわかりません こんな私にもわかるように説明してほしいです; よろしくお願いします。
- ベストアンサー
- 数学・算数
- 素因数分解の一意性?????
m,n,p,qをすべて互いに素な自然数とした時に、 2^n・p^m=q^mにおいて、 素因数分解の一意性より、qは2の倍数である。 素因数分解の一意性ってどういうことなのでしょうか?
- ベストアンサー
- 数学・算数
- 素因数分解ができない?
123、205の最大公約数はいくつでしょう? 素因数分解をして求めたいのですが、 123は3で割って41 3* 205は5で割って41 5* となるのでしょうか? その後の素因数分解が続きません。 すいませんが、教えてください。 よろしくお願いします。
- ベストアンサー
- 数学・算数