ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Алгоритм ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° расчСта числа сочСтаний для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл Π±Π΅Π· вычислСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡ… разлоТСния Π½Π° простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΈ сокращСний

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π“Π΄Π΅: n — число элСмСнтов Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ мноТСствС; m — число элСмСнтов Π² ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ΅, для расчСта числа сочСтаний Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ², Π° ΠΎΠ½ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ рассчитаны для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…одящим 170, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π΅Ρ‰Π΅ мСньшС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 30. Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ процСссС ΠΏΡ€ΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Алгоритм ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° расчСта числа сочСтаний для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл Π±Π΅Π· вычислСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡ… разлоТСния Π½Π° простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΈ сокращСний (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ Internet встрСчаСтся Π·Π°Π΄Π°Ρ‡Π°: «ΠΠ°ΠΉΡ‚ΠΈ всС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ m ΠΏΠΎ n, ΠΏΡ€ΠΈ этом m ΠΈ n ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большими числами, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков тысяч» ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π²Π΅Ρ€Π½Ρ‹Π΅, Ρ‚. Π΅. Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ [1]. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ on-line ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Ρ‹ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² [2] ΠΈ Ρ‡ΠΈΡΠ»Π° сочСтаний [3]. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании классичСской ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ числа сочСтаний:

.

Π³Π΄Π΅: n — число элСмСнтов Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ мноТСствС; m — число элСмСнтов Π² ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ΅, для расчСта числа сочСтаний Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ², Π° ΠΎΠ½ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ рассчитаны для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…одящим 170, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Π΅Ρ‰Π΅ мСньшС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 30.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ прСдлагаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΡ‚ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ся Π² Internet:

  • 1. Найти всС простыС числа мСньшиС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° n.
  • 2. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл числитСля.
  • 3. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй чисСл числитСля.
  • 4. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл знамСнатСля.
  • 5. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй чисСл знамСнатСля.
  • 6. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй числитСля, Π½Π΅ Π²Ρ…одящих Π² ΠΌΠ°ΡΡΠΈΠ² простых сомноТитСлСй знамСнатСля.
  • 7. ΠŸΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… простых сомноТитСлСй числитСля.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ°Ρ… 1 ΠΈ 2 приводятся экранныС Ρ„ΠΎΡ€ΠΌΡ‹ для задания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² расчСта числа сочСтаний для расчСта ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Рисунок 1. Экранная Ρ„ΠΎΡ€ΠΌΠ° для задания расчСта ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния числа сочСтаний Рисунок 2. Экранная Ρ„ΠΎΡ€ΠΌΠ° для задания расчСта массива Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ числа сочСтаний На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3 ΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ расчСтов:

Рисунок 3. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ расчСта значСния числа сочСтаний ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ on-line ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ позволяСт ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ число сочСтаний ΠΈΠ· 10 000 ΠΏΠΎ 5, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ рассчитываСтся ΠΏΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вострСбован. Но Π²ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сайт Π’ΠΎΠ»ΡŒΡ„Ρ€Π°ΠΌ-ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ [3], Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: 832 500 291 625 001 984.

Π’Π°Π±Π»ΠΈΡ†Π° 1 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ расчСта числа сочСтаний ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… значСниях n ΠΈ m.

N.

M1.

M2.

M3.

M4.

M5.

M6.

M7.

M8.

M9.

M10.

M11.

N1.

N2.

N3.

N4.

N5.

N6.

N7.

N8.

N9.

N10.

N11.

N12.

N13.

N14.

N15.

N16.

N17.

N18.

N19.

N20.

N21.

N22.

N23.

N24.

N25.

N26.

N27.

N28.

N29.

N30.

N31.

N32.

N33.

N34.

N35.

N36.

N37.

N38.

N39.

N40.

N41.

N42.

N43.

N44.

N45.

N46.

N47.

N48.

N49.

N50.

N51.

N52.

N53.

НиТС приводится исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования xBase++: массив Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

© Π Π°ΡΡ‡Π΅Ρ‚ числа сочСтаний для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ расчСта Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ разлоТСния ΠΈΡ… Π½Π° ΠΏΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΈ ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡ, beta-version, rel: 12.06.2013.

© Π΄.э.Π½., ΠΊ.Ρ‚.Π½., профСссор Π›ΡƒΡ†Π΅Π½ΠΊΠΎ Π•Π²Π³Π΅Π½ΠΈΠΉ Π’Π΅Π½ΠΈΠ°ΠΌΠΈΠ½ΠΎΠ²ΠΈΡ‡, Россия, ΠšΡ€Π°ΡΠ½ΠΎΠ΄Π°Ρ€.

PROCEDURE AppSys.

// Π Π°Π±ΠΎΡ‡ΠΈΠΉ стол остаСтся ΠΎΠΊΠ½ΠΎΠΌ прилоТСния.

RETURN.

FUNCTION Main ().

LOCAL GetList[0], GetOptions, nColor, oMessageBox, oMenuWords, oDlg, ;

oMenuBar, oMenu1, oMenu2,oMenu3,oMenu4,oMenu5,oMenu6,oMenu7,; oMenu33.

DC_IconDefault (1000).

SET DECIMALS TO 15.

SET DATE GERMAN.

SET ESCAPE On.

SET COLLATION TO SYSTEM // Руссификация.

*SET COLLATION TO ASCII // Руссификация.

PUBLIC aSay[30], Mess97, Mess98, Mess99 // Массив сообщСний ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… стадий исполнСния (Π΄ΠΎ 30 Π½Π° ΡΠΊΡ€Π°Π½Π΅).

PUBLIC Time_progress, Wsego, oProgress, lOk.

PUBLIC nEvery := 100 // ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΎΠΊ прогрСсс-Π±Π°Ρ€

g = 0.

s = 0.

mRegim = 1.

@g, 0 DCGROUP oGroup1 CAPTION 'Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:' SIZE 62.0, 7.0.

@++s, 2 DCRADIO mRegim VALUE 1 PROMPT 'РасчСт ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ значСния числа сочСтаний ΠΈΠ· N ΠΏΠΎ M' PARENT oGroup1.

@++s, 2 DCRADIO mRegim VALUE 2 PROMPT 'РасчСт Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ числа сочСтаний для Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² N ΠΈ M' PARENT oGroup1.

s = 3.

mN1 = 30.

mM1 = 2.

@++s+0.2,12 DCSAY «Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ N:» EDITPROTECT {||.NOT.mRegim=1} HIDE {||.NOT.mRegim=1} PARENT oGroup1.

s , 27 DCSAY «» GET mN1 PICTURE «#######» EDITPROTECT {||.NOT.mRegim=1} HIDE {||.NOT.mRegim=1} PARENT oGroup1

@++s+0.2,12 DCSAY «Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ M:» EDITPROTECT {||.NOT.mRegim=1} HIDE {||.NOT.mRegim=1} PARENT oGroup1.

s , 27 DCSAY «» GET mM1 PICTURE «#######» EDITPROTECT {||.NOT.mRegim=1} HIDE {||.NOT.mRegim=1} PARENT oGroup1

s = 3.

N1 = 1.

N2 = 30.

M1 = 1.

M2 = N2.

@++s+0.2, 5 DCSAY «Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ N:» EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup1.

s , 27 DCSAY «» GET N1 PICTURE «#######» EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup1

s , 37 DCSAY «» GET N2 PICTURE «#######» EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup1

@++s+0.2, 5 DCSAY «Π—Π°Π΄Π°ΠΉΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ M:» EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup1.

s , 27 DCSAY «» GET M1 PICTURE «#######» EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup1

s , 37 DCSAY «» GET M2 PICTURE «#######» EDITPROTECT {||.NOT.mRegim=2} HIDE {||.NOT.mRegim=2} PARENT oGroup1

DCGETOPTIONS TABSTOP.

DCREAD GUI ;

FIT ;

OPTIONS GetOptions ;

ADDBUTTONS;

MODAL ;

TITLE '© Π›ΡƒΡ†Π΅Π½ΠΊΠΎ Π•. Π’. РасчСт сочСтаний для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл'.

IF mRegim = 1.

oScr := DC_WaitOn ().

Mess := {}.

IF mN1 <= 21.

AADD (Mess, «Π§ΠΈΡΠ»ΠΎ сочСтаний ΠΈΠ· N=# ΠΏΠΎ M=$ ΠΏΠΎ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ с Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°ΠΌΠΈ: Π‘ (n, m) = n! / (m! (n-m)!) = «+ALLTRIM (STR (INT (Cf (mN1,mM1))))).

ELSE.

AADD (Mess, «Π§ΠΈΡΠ»ΠΎ сочСтаний ΠΈΠ· N=# ΠΏΠΎ M=$ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ с Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π°ΠΌΠΈ: Π‘ (n, m)=n!/(m!(n-m)!) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ рассчитано !»).

ENDIF.

AADD (Mess, «Π§ΠΈΡΠ»ΠΎ сочСтаний ΠΈΠ· N=# ΠΏΠΎ M=$ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ с ΡΠΎΠΊΡ€. простых ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ: Π‘ (n, m) = P (m+1,n)/P (1,n-m) = «+C (mN1,mM1)).

AADD (Mess, «Π³Π΄Π΅: P (a, b)=a*(a+1)*(a+2)*…*b: ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΎΡ‚ a Π΄ΠΎ b Ρ ΡˆΠ°Π³ΠΎΠΌ 1»).

DC_Impl (oScr).

Mess[1] = STRTRAN (Mess[1], «#», ALLTRIM (STR (mN1,15))).

Mess[1] = STRTRAN (Mess[1], «$», ALLTRIM (STR (mM1,15))).

Mess[2] = STRTRAN (Mess[2], «#», ALLTRIM (STR (mN1,15))).

Mess[2] = STRTRAN (Mess[2], «$», ALLTRIM (STR (mM1,15))).

LB_Warning (Mess, «© Π›ΡƒΡ†Π΅Π½ΠΊΠΎ Π•. Π’. РасчСт числа сочСтаний для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл»).

ENDIF.

IF mRegim = 2.

aStructure := { { «N», «C», 15, 0} }

FOR j=N1 TO N2.

FieldName = «M» +ALLTRIM (STR (j, 21)).

AADD (aStructure, { FieldName, «C», 250, 0 }).

NEXT.

DbCreate («Cnm.dbf», aStructure).

nMax = 0;FOR mn=N1 TO N2;FOR mm=1 TO mn;++nMax;NEXT;NEXT.

Mess = 'РасчСт числа сочСтаний ΠΈΠ· n ΠΏΠΎ m'.

@ 4,5 DCPROGRESS oProgress SIZE 70,1.1 MAXCOUNT nMax COLOR GRA_CLR_CYAN PERCENT EVERY 100.

DCREAD GUI TITLE Mess PARENT @oDialog FIT EXIT.

oDialog:show ().

nTime = 0.

CLOSE ALL.

USE Cnm EXCLUSIVE NEW.

SELECT Cnm.

DC_GetProgress (oProgress, 0, nMax).

FOR mn = N1 TO N2.

APPEND BLANK.

FIELDPUT (1, «N» +ALLTRIM (STR (mn, 21))).

FOR mm = 1 TO mn.

FIELDPUT (1+mm, C (mn, mm)).

DC_GetProgress (oProgress, ++nTime, nMax).

NEXT.

NEXT.

DC_GetProgress (oProgress, nMax, nMax).

oDialog:Destroy ().

Mess := {}.

AADD (Mess, 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ расчСта числа сочСтаний C (n, m) Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Cnm. dbf').

AADD (Mess, 'Из-Π·Π° большой размСрности числа Π² Π‘Π” Cnm. dbf прСдставлСны Π² Ρ‚Скстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅').

AADD (Mess, 'Π—Π°Π΄Π°Π½ΠΈΠ΅ΠΌ Π² MS Excel Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ячССк «Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ» ΠΎΠ½ΠΈ прСобразутся Π² Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚').

LB_Warning (Mess, «© Π›ΡƒΡ†Π΅Π½ΠΊΠΎ Π•. Π’. РасчСт числа сочСтаний для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл»).

ENDIF.

CLOSE ALL.

RETURN NIL.

Π‘ (n, m) = n! / (m! (n — m)!) число сочСтаний ΠΈΠ· n ΠΏΠΎ m.

FUNCTION Cf (n, m).

RETURN (Fact (n)/(Fact (m)*Fact (n-m))).

Π‘ (n, m) = n! / (m! (n — m)!) число сочСтаний ΠΈΠ· n ΠΏΠΎ m Π΄Π»Ρ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл Π±Π΅Π· вычислСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ разлоТСния.

Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»ΠΎΠ² Π½Π° ΠΏΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΈ ΠΈΡ… ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠΉ Π‘ (n, m) = P (m+1,n) / P (1,n-m), Π³Π΄Π΅ P (a, b) ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΎΡ‚ a Π΄ΠΎ b Ρ ΡˆΠ°Π³ΠΎΠΌ 1.

  • 1. Найти всС простыС числа мСньшиС n
  • 2. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл числитСля
  • 3. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй числитСля
  • 4. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл знамСнатСля
  • 5. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй чисСл знамСнатСля
  • 6. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй числитСля, Π½Π΅ Π²Ρ…одящих Π² ΠΌΠ°ΡΡΠΈΠ² простых сомноТитСлСй знамСнатСля
  • 7. ΠŸΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… простых сомноТитСлСй числитСля

FUNCTION C (n, m).

1. Найти всС простыС числа мСньшиС n, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 1 ΠΈ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ n=1 aPrCh := {} // Массив простых чисСл.

IF n = 1.

AADD (aPrCh, 1).

ELSE.

FOR j = 2 TO n.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, являСтся Π»ΠΈ j ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌ числом.

Flag = .T.

FOR i=2 TO j-1.

IF j=i*INT (j/i) // ДСлится Π»ΠΈ j Π½Π° i Π½Π°Ρ†Π΅Π»ΠΎ?

Flag = .F.

EXIT.

ENDIF.

NEXT.

IF Flag.

AADD (aPrCh, j).

ENDIF.

NEXT.

ENDIF.

  • * DC_DebugQout (aPrCh)
  • 2. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл числитСля

aChis := {}.

IF m = n.

AADD (aChis, 1).

ELSE.

IF m < n.

FOR j=m+1 TO n.

AADD (aChis, j).

NEXT.

ENDIF.

ENDIF.

DC_DebugQout (aChis).

3. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй числитСля.

aPSChis := {}

FOR i=1 TO LEN (aChis)

***** Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ число Π½Π° ΠΏΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ

aPrMn := {} // Массив простых ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ числа: Chislo.

Chislo = aChis[i].

IF Chislo = 1.

AADD (aPrMn, 1).

ELSE.

Flag = .T.

DO WHILE Flag.

FOR j=1 TO LEN (aPrCh).

**** ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, дСлится Π»ΠΈ Chislo Π½Π° ΠΏΡ€ΠΎΡΡ‚ΠΎΠ΅ число ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° aPrCh.

Flag = .F.

IF Chislo = aPrCh[j] * INT (Chislo/aPrCh[j]).

AADD (aPrMn, aPrCh[j]).

Chislo = Chislo/aPrCh[j].

Flag = .T.

EXIT.

ENDIF.

NEXT.

ENDDO.

ENDIF.

***** ЗанСсти простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ числа aChis[j] Π² ΠΌΠ°ΡΡΠΈΠ² простых сомноТитСлСй числитСля.

FOR j=1 TO LEN (aPrMn).

AADD (aPSChis, aPrMn[j]).

NEXT.

NEXT.

  • * DC_DebugQout (aPSChis)
  • ***** 4. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив чисСл знамСнатСля

aZnam := {}.

IF m = n.

AADD (aZnam, 1).

ELSE.

IF m < n.

FOR j=1 TO n — m.

AADD (aZnam, j).

NEXT.

ENDIF.

ENDIF.

  • * DC_DebugQout (aZnam)
  • ******* 5. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй чисСл знамСнатСля

aPSZnam := {}.

FOR i=1 TO LEN (aZnam).

***** Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ число Π½Π° ΠΏΡ€ΠΎΡΡ‚Ρ‹Π΅ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ.

aPrMn := {} // Массив простых ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ числа: Chislo.

Chislo = aZnam[i].

IF Chislo = 1.

AADD (aPrMn, 1).

ELSE.

Flag = .T.

DO WHILE Flag.

FOR j=1 TO LEN (aPrCh).

**** ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, дСлится Π»ΠΈ Chislo Π½Π° ΠΏΡ€ΠΎΡΡ‚ΠΎΠ΅ число ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° aPrCh.

Flag = .F.

IF Chislo = aPrCh[j] * INT (Chislo/aPrCh[j]).

AADD (aPrMn, aPrCh[j]).

Chislo = Chislo/aPrCh[j].

Flag = .T.

EXIT.

ENDIF.

NEXT.

ENDDO.

ENDIF.

*** ЗанСсти простыС ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ числа aZnam[j] Π² ΠΌΠ°ΡΡΠΈΠ² простых сомноТитСлСй знамСнатСля.

FOR j=1 TO LEN (aPrMn).

AADD (aPSZnam, aPrMn[j]).

NEXT.

NEXT.

  • * DC_DebugQout (aPSZnam)
  • ******** 6. Π‘Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив простых сомноТитСлСй числитСля,
  • ******** Π½Π΅ Π²Ρ…одящих Π² ΠΌΠ°ΡΡΠΈΠ² простых сомноТитСлСй знамСнатСля

aPS:= {}.

FOR j=1 TO LEN (aPSChis).

Pos = ASCAN (aPSZnam, aPSChis[j]).

IF Pos = 0.

AADD (aPS, aPSChis[j]).

ELSE.

aPSZnam[Pos] = 1 // Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ простых сомноТитСлСй числитСля ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Сля.

ENDIF.

NEXT.

  • * DC_DebugQout (aPS)
  • ******** 7. ΠŸΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ массив ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… простых сомноТитСлСй числитСля ΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Сля

mMulChis = 1.

FOR j=1 TO LEN (aPS).

mMulChis = mMulChis * aPS[j].

NEXT.

mMulZnam = 1.

FOR j=1 TO LEN (aPSZnam).

mMulZnam = mMulZnam * aPSZnam[j].

NEXT.

DC_DebugQout (mMulChis, mMulZnam, mMulChis/mMulZnam).

RETURN (ALLTRIM (STR (mMulChis/mMulZnam, 250))).

FUNCTION LB_Warning (message, ctitle).

LOCAL aMsg := {}.

DEFAULT cTitle TO ''.

IF valtype (message) # 'A'.

aadd (aMsg, message).

ELSE.

aMsg := message.

ENDIF.

IF LEN (ALLTRIM (cTitle)) > 0.

DC_MsgBox (, aMsg, cTitle).

ELSE.

DC_MsgBox (, aMsg,'Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ когнитивная аналитичСская систСма «Π­ΠΉΠ΄ΠΎΡ-Π₯++» ').

ENDIF.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ процСссС ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΠΈ дисциплин: «ΠΠ»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…», «Π”искрСтная ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°», «Π§ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹», «ΠžΡΠ½ΠΎΠ²Ρ‹ статистики ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈΠΊΠΈ» ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ….

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ