パイソニスタの方へ
・ChatGPT-3.5先生の、どこが間違っているのかわかりませんでした。
・sumの使い方を教えて下さい。
・コメントをいただきました。ありがとうございました。
オリジナル
問題解答解説
>2024年解答速報 数学入試問題 様
未登録(2024/02/27)
上と同じです。大学入試数学問題集成 様>テキスト
https://mathexamtest.web.fc2.com/2024/202410001/2024100010100mj.html#top-0106
公式ホームページ
未登録(2024/02/27)
sympyで(オリジナル 様の方法で)
・勉強中
ChatGPT-3.5先生が自己採点されました。
???私は、どこが間違っているのかわかりませんでした。
???繰り返すと、先生の回答が変わります。
「約数の総和を計算」と、ChatGPT-3.5先生が判断されました。
(1)自然数m,nについて、2^m・3^nの正の約数の個数を求めよ.`
(2)6912の正の約数のうち、12で割り切れないものの総和を求めよ.
??? 返信:間違っていますが、ステキです。一部省略。
(1)...(m+1)(n+1)個あります。...
(2)...よって、6912の正の約数のうち、12で割り切れないものの総和は6848です。...
私は調子にのって。
回答の自己採点をお願いします。
??? (再)返信:間違っていますが、ステキです。一部省略。
...
自己採点結果:
(1) 正解
(2) 正解
両方とも正しい回答です。
ChatGPT-3.5先生にsympyのコード出力してもらいました。
・1行、最終行に追加です。
(1)自然数m,nについて、2^m・3^nの正の約数の個数を求めよ.`
(2)6912の正の約数のうち、12で割り切れないものの総和を求めよ.
sympyでお願いします。
###############
# 間違っています。
###############
from sympy import factorint
# 問題1
def count_divisors(m, n):
divisors = factorint(2**m * 3**n)
count = 1
for exp in divisors.values():
count *= (exp + 1)
return count
m = 3
n = 2
result1 = count_divisors(m, n)
print("問題1の解答:", result1)
# 問題2
def sum_of_non_divisible_by_12_factors(number):
divisors = factorint(number)
total_sum = 0
for divisor, exponent in divisors.items():
if divisor % 12 != 0:
total_sum += divisor * (exponent + 1)
return total_sum
number = 6912
result2 = sum_of_non_divisible_by_12_factors(number)
print("問題2の解答:", result2)
・SymPy Liveで
問題1の解答: 12
問題2の解答: 30
sympyで、私のいつもの方法のつもりが...
・自分でプログラミングするのが、面倒くさくなってきました。
・自分が考えているコードより、ステキです。
6912の約数のうち、12で割り切れない約数の総和ををsympyでお願いします。
from sympy import divisors, Sum, symbols
# 6912の約数を計算
divs = divisors(6912)
# 約数の中で12で割り切れないものをフィルタリングして総和を計算
x = symbols('x')
s = Sum(x, (x, 0, len([d for d in divs if d % 12 != 0]) - 1))
# 総和を計算
result = s.doit()
print(result)
??? 調子が悪いです。パイソニスタの方へ教えて下さい。
105
sympyで、やっぱり、私のいつもの方法です。
・(2)で(1)を使っていません。申し訳ありません。
from sympy import *
var('m,n' )
# 問題1
def count_divisors(m, n):
return (m+1)*(n+1)
result1 = count_divisors(m, n)
print("# 問題1の解答:", result1)
# 問題2
def sum_of_non_divisible_by_12_factors(number):
total_sum = 0
sol = divisors(number)
for i in range(len (sol )):
if sol[i] % 12 != 0:
total_sum += sol[i]
return total_sum
number = 6912
print("# 問題2の解答:", sum_of_non_divisible_by_12_factors(number))
# 問題1の解答: (m + 1)*(n + 1)
# 問題2の解答: 628