No.3ベストアンサー
- 回答日時:
反則かもしれませんが、単純にプログラム組んで(Scala)
全数の約数の数を力業で調べました。
なんの工夫もないので 20分位かかりました(^^;
(1) 7560, 9240 で 64個
(2) 83160, 98280 で 128個
(3) 720720, 831600, 942480, 982800, 997920, 240個
No.3 さんと同じ答えなので、多分どちらも正解でしょう。
以下がプログラムです。マイナーな言語ですいません。
#マイナーといても Twitter の記述言語ですが・・・
import scala.collection.mutable.ArrayBuffer
import scala.util.control.Breaks._
---------- scala プログラム ここから(100万の場合) ----------
object Main {
def isPrime(i: Int): Boolean = {
if (i <= 3) true
else {
val max = (math.sqrt(i) + 0.5).toInt;
for (j <- 2 to max) {
if (i % j == 0)
return false
}
return true
}
}
def main(args: Array[String]): Unit = {
val primes = ArrayBuffer[Int]()
var maxDivisors = 0;
for (i <- 2 to 1000000) {
if (isPrime(i)) {
primes.append(i);
}
}
println("素数の数 = " + primes.length)
for (i <- 2 to 1000000) {
var degrees = List[Int]()
breakable {
for (j <- 0 until primes.length) {
if (primes(j) > i)
break;
var degree = 0
var k = i
while (k % primes(j) == 0) {
degree += 1
k = k / primes(j)
}
if (degree != 0) {
degrees = degrees :+ degree
//println(primes(j) + ", " + degree)
}
}
}
var divisors = 1
for (degree <- degrees) {
divisors *= degree + 1
}
if (divisors >= maxDivisors) {
printf("i = %d, Total = %d\n", i, divisors)
maxDivisors = divisors
}
}
}
}
No.4
- 回答日時:
No.3です。
(3)を10秒程度で求められるように改良しました。import scala.collection.mutable.ArrayBuffer
import scala.util.control.Breaks._
object Main {
def isPrime(i: Int): Boolean = {
if (i <= 3) true
else {
val max = (math.sqrt(i) + 0.5).toInt;
for (j <- 2 to max) {
if (i % j == 0)
return false
}
return true
}
}
def main(args: Array[String]): Unit = {
var maxDivisors = 0;
val primes = 2 to 1001 filter { isPrime(_) }
println("素数の数 = " + primes.length)
for (i <- 2 to 1000000) {
var degrees = List[Int]()
var k = i
var max = (math.sqrt(k) + 0.1).toInt
breakable {
for (j <- 0 until primes.length) {
if (primes(j) > max) {
if (k > 1) {
degrees = degrees :+ 1
}
break;
}
var degree = 0
while (k % primes(j) == 0) {
degree += 1
k = k / primes(j)
}
if (degree != 0) {
degrees = degrees :+ degree
}
}
}
var divisors = 1
for (degree <- degrees) {
divisors *= degree + 1
}
if (divisors >= maxDivisors) {
printf("i = %d, Total = %d\n", i, divisors)
maxDivisors = divisors
}
}
}
}
No.2
- 回答日時:
> 1,000 約数が多い数840 個数32
「1000以下の自然数で最も約数が多い数は840で、その約数の個数は32個」
という意味ですよね。
1万、10万、100万以下の場合、それぞれ同じ最大個数になる数が複数あるようですが、
(1)
7560 = 2^3 * 3^3 * 5 * 7
9240 = 2^3 * 3 * 5 * 7 * 11
約数の個数は64個
(2)
83160 = 2^3 * 3^3 * 5 * 7 * 11
98280 = 2^3 * 3^3 * 5 * 7 * 13
約数の個数は128個
(3)
720720 = 2^4 * 3^2 * 5 * 7 * 11 * 13
831600 = 2^4 * 3^3 * 5^2 * 7 * 11
942480 = 2^4 * 3^2 * 5 * 7 * 11 * 17
982800 = 2^4 * 3^3 * 5^2 * 7 * 13
997920 = 2^5 * 3^4 * 5 * 7 * 11
約数の個数は240個
でいいかと思います。 違ってたらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「お話させていただく」か「お...
-
講演会の謝辞の仕方
-
パズドラの別垢をつくりたいの...
-
たまにいる、なんでも知ってる...
-
素敵なお話をたくさん聞かせて...
-
同棲中の彼氏のゲーム依存につ...
-
ゲームをしたいのですがRyzen5 ...
-
底上げの反対語
-
刀工【月山貞利】について。
-
【パズドラ】 パズドラの広告ガ...
-
悩んでいる人々も解脱が必要?
-
観葉植物に白い綿上のカビが
-
ファイナルファンタジー7につ...
-
てくてくエンジェルの使い方
-
神様をゲームキャラにされても...
-
ツムツムで鍵マークを出すには...
-
型の異なる多次元配列のキャス...
-
この漢字はなんとよむのでしょう?
-
絵手紙の文字の方向について
-
ネット上で、ニュースを除いて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「お話させていただく」か「お...
-
講演会の謝辞の仕方
-
パズドラの別垢をつくりたいの...
-
たまにいる、なんでも知ってる...
-
自分の嫉妬の気持ちをどうした...
-
素敵なお話をたくさん聞かせて...
-
同棲中の彼氏のゲーム依存につ...
-
ゲームをしたいのですがRyzen5 ...
-
てくてくエンジェルの使い方
-
思わず笑ってしまう回文、教え...
-
Windows10のノートパソコンにエ...
-
底上げの反対語
-
銀河英雄伝説 ミッターマイヤ...
-
ゲームの人間関係について
-
暇という言葉が嫌いです。
-
なぞかけのアイデアをください...
-
暇つぶしのゲーム
-
しりとり
-
三国志パズル大戦の違法性
-
二宮和也さんのパズドラIDを教...
おすすめ情報