Skip to content

Instantly share code, notes, and snippets.

@TonyMooori
Created October 2, 2017 07:31
Show Gist options
  • Select an option

  • Save TonyMooori/d9445ec993d026100bce43f34deb4a4c to your computer and use it in GitHub Desktop.

Select an option

Save TonyMooori/d9445ec993d026100bce43f34deb4a4c to your computer and use it in GitHub Desktop.
数学の問題の解答が一つだけしかないか確認
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 問題\n",
"ある自然数$x$がある.自然数$x$は$n,n+1(n\\leq200,n+1\\leq200)$を除く200以下の全ての自然数で割り切れるという性質を持つ.\n",
"$n$,$n+1$の組をひとつ求めよ.\n",
"\n",
"## 回答\n",
"1から200までの数の最小公倍数は,素因数分解すると奇数$k$を用いて$2^{7}k$という数字となる.ここで1から200までの数の最小公倍数を2と素数127で割った値を$y$とすると,$y$は127と128で割れない値になる.200以下の自然数に127以外に127の倍数はない.また$2^7$を素因数に持つ整数もない.よって$y$条件を満たす自然数$x$の条件を満たしている.よって$n,n+1$の組として(127,128)がある.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"succ: N=50,ans1=31,ans2=32,x=49984588778161237200\n",
"failed: N=100\n",
"succ: N=150,ans1=127,ans2=128,x=19541714063639443819857654528657219411089303003820795960456000\n",
"succ: N=200,ans1=127,ans2=128,x=1327927515090260884407345538562367745796828278681721394601759928808007945120777126248000\n",
"succ: N=250,ans1=127,ans2=128,x=130772114744924574706363590925874340043529225687091412695324636034906746054600753955764866241169244952000\n",
"succ: N=300,ans1=256,ans2=257,x=17538359604668456465621738470710851838830797427977636846629028507364462353333899882243878603401973940799038401578085611825296000\n",
"succ: N=350,ans1=256,ans2=257,x=15710940042837302532926587682318922297070523871850343852586835880017268131333200637890980421517484774745187218555684944617703292807701121816827184000\n",
"succ: N=400,ans1=256,ans2=257,x=116085483413080851997297607751181984039505286682906734766771141886928415432271142595094870432957320402858350965325934882166692109947052808387473745418094345294247430032000\n",
"succ: N=450,ans1=256,ans2=257,x=54729498379647217035756720098255511324480611519572358326125124530649666892630329064131208366027803043859696791877198220452470709974955328618693674871716693196945016675937982263864677908586448000\n",
"succ: N=500,ans1=256,ans2=257,x=142489537585511374696233218908642604727162136675660037055154066215167913270046135008419766186559001916864421413712857734850805473372808048821619534365096893681053337667228401393490062686262540049514002346573676112000\n",
"failed: N=550\n",
"failed: N=600\n",
"failed: N=650\n",
"failed: N=700\n",
"failed: N=750\n",
"failed: N=800\n",
"failed: N=850\n",
"failed: N=900\n",
"failed: N=950\n",
"failed: N=1000\n"
]
}
],
"source": [
"\n",
"\n",
"def gcd(a,b):\n",
" if a>b:\n",
" return gcd(b,a)\n",
" else:\n",
" modula = b%a\n",
" if modula == 0:\n",
" return a\n",
" else:\n",
" return gcd(modula,a)\n",
"\n",
"def calc(N=200):\n",
" flag = True\n",
" \n",
" for i in range(1,N+1):\n",
" ans1 = i\n",
" ans2 = i+1\n",
" x = 1\n",
" \n",
" for j in range(1,N+1):\n",
" if j == ans1 or j == ans2:\n",
" pass\n",
" else:\n",
" a = gcd(x,j)\n",
" x = x * j // a\n",
" \n",
" if x % ans1 == 0 or x % ans2 == 0:\n",
" pass\n",
" else:\n",
" flag=False\n",
" print(\"succ: N=%d,ans1=%d,ans2=%d,x=%d\" %(N,ans1,ans2,x))\n",
" if flag:\n",
" print(\"failed: N=%d\" % N)\n",
"\n",
"for i in range(1,21):\n",
" calc(i*50)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment