天津饭不吃饺子 发表于 2020-2-18 15:06

python中算术穷举法的代码问题

y = 1

while y < 10 :

    x = 1
    while x < 10 :
      a = x * 10 + y
      b = y * 10 + x
      if a * 45 == 50 * b :
            print('Y为', y ,'时, X的数值是: ' , x )
      x = x + 1

    y = y + 1


想问问这里哪里出了问题呀,运行之后得不出结果

井右寺 发表于 2020-2-18 16:49

因为在这个定义域内无值啊{:1_889:}
(10x+y)*45 = (10y+x)*50

落花萧然 发表于 2020-2-18 16:52

跑了一下,应该是没有符合的数

y = 1

while y < 10 :
    x = 1
    while x < 10 :
      a = x * 10 + y
      b = y * 10 + x
      if a * 45 == 50 * b :
            print('Y为', y ,'时, X的数值是: ' , x )
      x = x + 1
      
    y = y + 1
print('无结果')

落花萧然 发表于 2020-2-18 16:52

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
========================= RESTART: F:\Python\test.py =========================
无结果
>>>

落花萧然 发表于 2020-2-18 17:01

完善下:

y = 1
count=0
while y < 10 :
    x = 1
    while x < 10 :
      a = x * 10 + y
      b = y * 10 + x
      if a * 45 == 50 * b :
            print('Y为', y ,'时, X的数值是: ' , x )
            count=count+1
      x = x + 1
      
    y = y + 1
if count==0:
    print('无结果')
else:
    print('共有',count,'个结果')

ymhld 发表于 2020-2-18 18:36

1 1 495 550 False
2 1 945 600 False
3 1 1395 650 False
4 1 1845 700 False
5 1 2295 750 False
6 1 2745 800 False
7 1 3195 850 False
8 1 3645 900 False
9 1 4095 950 False
1 2 540 1050 False
2 2 990 1100 False
3 2 1440 1150 False
4 2 1890 1200 False
5 2 2340 1250 False
6 2 2790 1300 False
7 2 3240 1350 False
8 2 3690 1400 False
9 2 4140 1450 False
1 3 585 1550 False
2 3 1035 1600 False
3 3 1485 1650 False
4 3 1935 1700 False
5 3 2385 1750 False
6 3 2835 1800 False
7 3 3285 1850 False
8 3 3735 1900 False
9 3 4185 1950 False
1 4 630 2050 False
2 4 1080 2100 False
3 4 1530 2150 False
4 4 1980 2200 False
5 4 2430 2250 False
6 4 2880 2300 False
7 4 3330 2350 False
8 4 3780 2400 False
9 4 4230 2450 False
1 5 675 2550 False
2 5 1125 2600 False
3 5 1575 2650 False
4 5 2025 2700 False
5 5 2475 2750 False
6 5 2925 2800 False
7 5 3375 2850 False
8 5 3825 2900 False
9 5 4275 2950 False
1 6 720 3050 False
2 6 1170 3100 False
3 6 1620 3150 False
4 6 2070 3200 False
5 6 2520 3250 False
6 6 2970 3300 False
7 6 3420 3350 False
8 6 3870 3400 False
9 6 4320 3450 False
1 7 765 3550 False
2 7 1215 3600 False
3 7 1665 3650 False
4 7 2115 3700 False
5 7 2565 3750 False
6 7 3015 3800 False
7 7 3465 3850 False
8 7 3915 3900 False
9 7 4365 3950 False
1 8 810 4050 False
2 8 1260 4100 False
3 8 1710 4150 False
4 8 2160 4200 False
5 8 2610 4250 False
6 8 3060 4300 False
7 8 3510 4350 False
8 8 3960 4400 False
9 8 4410 4450 False
1 9 855 4550 False
2 9 1305 4600 False
3 9 1755 4650 False
4 9 2205 4700 False
5 9 2655 4750 False
6 9 3105 4800 False
7 9 3555 4850 False
8 9 4005 4900 False
9 9 4455 4950 False


    while x < 10 :
      a = x * 10 + y
      b = y * 10 + x
      print (x,y,45*a,50*b,(a * 45 == 50 * b))

确实是没有符合条件的,

ymhld 发表于 2020-2-18 18:37

Y为 80 时, X的数值是:91


y = 1

while y < 110 :

    x = 1
    while x < 110 :
      a = x * 10 + y
      b = y * 10 + x
      #print (x,y,45*a,50*b,(a * 45 == 50 * b))
      if a * 45 == 50 * b :
            print('Y为', y ,'时, X的数值是: ' , x )
      x = x + 1

    y = y + 1

天津饭不吃饺子 发表于 2020-2-19 08:46

ymhld 发表于 2020-2-18 18:36
1 1 495 550 False
2 1 945 600 False
3 1 1395 650 False


谢谢师兄的回答

天津饭不吃饺子 发表于 2020-2-19 08:47

落花萧然 发表于 2020-2-18 17:01
完善下:

y = 1


谢谢师兄

天津饭不吃饺子 发表于 2020-2-19 08:48

井右寺 发表于 2020-2-18 16:49
因为在这个定义域内无值啊
(10x+y)*45 = (10y+x)*50

谢谢师兄
页: [1]
查看完整版本: python中算术穷举法的代码问题