Тхе 3Н+1 проблем је апстрактни математички проблем који је претпоставка (још није доказана). Такође је познато као Цоллатз проблем. У овом одељку ћемо разговарати о проблему 3Н+1 заједно са његовим Јава програмом.
Задатак је да се напише Јава програм који ће читати позитиван цео број од корисника и штампати 3Н+1 низ који почиње од тог целог броја. Програм такође треба да броји и штампа број појмова у низу.
Проналажење 3Н+1 секвенце
Дат позитиван цео број, Н, дефинишите низ 3Н+1 почевши од Н на следећи начин:
шта је наредба за извоз у линуксу
- Ако је Н паран број, онда Н поделите са два.
- Ако је Н непаран број, онда помножите Н са 3 и додајте 1.
- Наставите да генеришете бројеве на овај начин док Н не постане једнако 1.
Математички, можемо дефинисати проблем 3Н+1 на следећи начин:
Хајде да разумемо исказ проблема кроз пример.
Претпоставимо, Н = 3 , што је непаран број. Према горњем правилу, помножимо Н са 3 и додамо 1, добијамо Н = 3*3+1 = 10. Дакле, Н постаје паран број. Сада поделите Н са 2. Даје се Н = 10/2 = 5. Наставите процес док Н не постане једнако 1. Дакле, 3Н+1 низ ће бити 3, 10, 5, 16, 8, 4, 2, 1 .
Алгоритам проблема 3Н+1
Да би израчунао следећи термин, програм мора да предузме различите радње у зависности од тога да ли Н је Чак или одд . За исто, захтевали смо иф наредбу која ће одлучити да је Н паран или непаран.
Једини проблем који остаје је бројање. Бројање значи да почињемо са нулом, и сваки пут када имамо нешто да бројимо, додајемо 1. Потребна нам је променљива (рецимо бројање) да бисмо бројали.
укључите Јава
Још увек морамо да бринемо о првом кораку. Како можемо добити позитиван цео број од корисника? Ако само читамо број, могуће је да би корисник могао да унесе негативан број или нулу. Ако пратимо шта се дешава када је вредност Н негативна или нула, видећемо да ће програм трајати заувек, пошто вредност Н никада неће постати једнака 1 што није компатибилно.
приоритетни ред јава
У овом случају, проблем вероватно није велика ствар, али генерално треба да покушамо да пишемо програме који су сигурни. Један од начина да се ово поправи је да наставите да читате у бројевима док корисник не унесе позитиван број.
Read a Positive integer N from the user while N is not positive: Print an error message; Read another value for N; Let count = 0; while N is not 1: if N is even: Compute N = N/2; else Compute N = 3 * N + 1; Output N; Add 1 to count; Output the count;
Прва вхиле петља ће се завршити само када је Н позитиван број, као што је потребно. Ако Н није позитивно, замолите корисника да унесе другу вредност. Проблем настаје ако други број који је унео корисник такође није позитиван. Наредба иф се извршава само једном, тако да се други улазни број никада не тестира.
Са вхиле петљом, након што се унесе други број, рачунар се враћа на почетак петље и тестира да ли је други број позитиван. Ако није, тражи од корисника трећи број и наставиће да тражи бројеве све док корисник не унесе прихватљив унос.
Хајде да имплементирамо горњи алгоритам у Јава програм.
3н+1 Проблем Јава програм
ТхрееНПлусОнеПроблем.јава
import java.util.Scanner; public class ThreeNPlusOneProblem { public static void main(String args[]) { //variable that denotes the starting point of the sequence int N; //variable to count the number of terms int count; Scanner sc=new Scanner(System.in); System.out.print('Enter the starting point for the sequence: '); //reads an integer from the user N=sc.nextInt(); while (N <= 0 1 2="=" 0) { system.out.println('the starting point must be positive. please re-enter the number: '); n="sc.nextInt();" } count="0;" executes when is greater than while (n !="1)" if % 2; an odd number else * + 1; system.out.print(n ' '); increments variable by system.out.println(); system.out.println('there are '+count+' terms in sequence.'); end of main() class < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/27/3n-1-problem-java-2.webp" alt="3N+1 Problem in Java"> <hr></=>