Wednesday 30 August 2017

Java Code to find the kth smallest element

Problem:

Given a randomly ordered array of n elements determine the kth smallest element in the set.

Solution:

package array.programs;

import java.util.Arrays;
import java.util.Scanner;

public class KthSmalletElement {

int[] numbers;
int k;

public static void main(String[] args) {
KthSmalletElement kthSmalletElement = new KthSmalletElement();
kthSmalletElement.getTheNumbers();
kthSmalletElement.findKthSmallestElement();
}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
System.out.println("enter which smallest element you want to find");
k = scanner.nextInt();
scanner.close();
}

public void findKthSmallestElement(){
Arrays.sort(numbers);
System.out.println("the array is ");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
System.out.println();
System.out.println("the smallest element is " + numbers[k - 1]);
}

}


Output:

how many numbers
5
enter number
123
enter number
33
enter number
444
enter number
2
enter number
33333
enter which smallest element you want to find
3
the array is
2 33 123 444 33333
the smallest element is 123

Java Code to Partitioning an Array

Problem:

Given a randomly ordered array of n elements, partition the elements into two subsets such that elements <= x are in one subset and elements >x are in the other subset.

Solution:

package array.programs;

import java.util.Arrays;
import java.util.Scanner;

public class PartitioningAnArray {

int[] numbers;
int[] firstSetArray;
int[] secondSetArray;
int pivot;


public static void main(String[] args) {
PartitioningAnArray partitioningAnArray = new PartitioningAnArray();
partitioningAnArray.getTheNumbers();
partitioningAnArray.partitionArray();
System.out.println("the original Array is ");
partitioningAnArray.printTheArray(partitioningAnArray.numbers);
System.out.println("the first set Array is ");
partitioningAnArray.printTheArray(partitioningAnArray.firstSetArray);
System.out.println("the second set Array is ");
partitioningAnArray.printTheArray(partitioningAnArray.secondSetArray);
}

public void getTheNumbers(){
int n = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
n = scanner.nextInt();

numbers = new int[n];
firstSetArray = new int[n];
secondSetArray = new int[n];

for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
System.out.println("enter the number to act as pivot");
pivot = scanner.nextInt();
scanner.close();
}

public void partitionArray(){
Arrays.sort(numbers);
int j = 0;
int k = 0;
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] <= pivot){
firstSetArray[j++] = numbers[i];
}
else if(numbers[i] > pivot){
secondSetArray[k++] = numbers[i];
}
}
}

public void printTheArray(int[] array){
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
}


Output:

how many numbers
10
enter number
28
enter number
26
enter number
25
enter number
11
enter number
16
enter number
12
enter number
24
enter number
29
enter number
6
enter number
10
enter the number to act as pivot
16
the original Array is
6 10 11 12 16 24 25 26 28 29
the first set Array is
6 10 11 12 16 0 0 0 0 0
the second set Array is
24 25 26 28 29 0 0 0 0 0


Tuesday 29 August 2017

Java Code to remove the duplicate elements from an ordered array

Problem:

Remove the duplicate elements from an ordered array.

Solution:

package array.programs;

import java.util.Arrays;
import java.util.Scanner;

public class RemovalOfDuplicatesFromAnArray {

int[] numbers;
int max;

public static void main(String[] args) {
RemovalOfDuplicatesFromAnArray  removalOfDuplicatesFromAnArray = new RemovalOfDuplicatesFromAnArray();
removalOfDuplicatesFromAnArray.getTheNumbers();
removalOfDuplicatesFromAnArray.removeDuplicates();
removalOfDuplicatesFromAnArray.printTheResult();

}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void removeDuplicates(){
Arrays.sort(numbers);
int j = 0;
int[] temp = new int[numbers.length];
for (int i = 0; i < numbers.length - 1; i++) {
if(numbers[i] != numbers[i+1]){
temp[j++] = numbers[i];
}
}
temp[j++] = numbers[numbers.length - 1];
for (int i = 0; i < temp.length; i++) {
numbers[i] = temp[i];
}
}

public void printTheResult(){
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
}

}


Output:

how many numbers
10
enter number
12
enter number
33
enter number
22
enter number
333
enter number
12
enter number
333
enter number
444
enter number
222
enter number
33
enter number
44
12 22 33 44 222 333 444 0 0 0

Monday 28 August 2017

Java Code to find the minimum, maximum and how many times they both occur in an array.

Problem:

Design and implement an algorithm to find the minimum, the maximum, and how many times they both occur in an array of n elements.

Solution:

package array.programs;

import java.util.Scanner;

public class MaximumAndMinimumNumberOccurences {

int[] numbers;
int max;
int maxCounter;
int min;
int minCounter;

public static void main(String[] args) {
MaximumAndMinimumNumberOccurences occurences = new MaximumAndMinimumNumberOccurences();
occurences.getTheNumbers();
occurences.findMaximum();
occurences.findMinimum();
occurences.findTheOccurences();
occurences.printTheResult();

}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findMaximum(){
max = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] > max){
max = numbers[i];
}
}
}

public void findMinimum(){
min = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] < min){
min = numbers[i];
}
}
}

public void findTheOccurences(){
for (int i = 0; i < numbers.length; i++) {
if(max == numbers[i]){
maxCounter++;
}
if(min == numbers[i]){
minCounter++;
}
}
}

public void printTheResult(){
System.out.println("the maximum value is " + max + " and the occurences are " + maxCounter);
System.out.println("the minimum value is " + min + " and the occurences are " + minCounter);
}

}


Output:

how many numbers
10
enter number
1
enter number
2
enter number
3
enter number
4
enter number
5
enter number
6
enter number
6
enter number
6
enter number
1
enter number
6
the maximum value is 6 and the occurences are 4
the minimum value is 1 and the occurences are 2


Java Code to find the position of a number in an array

Problem:

Find the position of a number in an array of n elements.

Solution:

package array.programs;

import java.util.Scanner;

public class PositionOfANumber {

int[] numbers;
int n;
int input;

public static void main(String[] args) {
PositionOfANumber positionOfANumber = new PositionOfANumber();
positionOfANumber.initializeTheArray();
System.out.println("the array elements are: ");
positionOfANumber.printArray();
System.out.println();
positionOfANumber.findPositionOfANumber();

}

public void initializeTheArray(){
Scanner scanner = new Scanner(System.in);
System.out.println("enter n value");
n = scanner.nextInt();
numbers = new int[n];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = i + 1;
}
System.out.println("enter the number which you want to find position");
input = scanner.nextInt();
scanner.close();
}

public void printArray(){
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
}

public void findPositionOfANumber(){
int position = -1;
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] == input){
position = i + 1;
break;
}
}
if(position == -1){
System.out.println("the given number is not in an array");
}
else{
System.out.println("the position of given number is" + position);
}
}

}



Output:

enter n value
12
enter the number which you want to find position
8
the array elements are:
1 2 3 4 5 6 7 8 9 10 11 12
the position of given number is8

enter n value
20
enter the number which you want to find position
21
the array elements are:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
the given number is not in an array





Sunday 27 August 2017

Java Code to find the second largest number in an array

Problem:

Design and implement an algorithm to find the second largest value in an array of n elements.

Solution:

package array.programs;

import java.util.Scanner;

public class SecondLargestElement {

int[] numbers;
int n;
int secondLargestNumber;

public static void main(String[] args) {
SecondLargestElement secondLargestElement = new SecondLargestElement();
secondLargestElement.initializeTheArray();
secondLargestElement.findSecondLargestNumber();

}

public void initializeTheArray(){
Scanner scanner = new Scanner(System.in);
System.out.println("enter n value");
n = scanner.nextInt();
numbers = new int[n];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findSecondLargestNumber(){
int max = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] > max){
secondLargestNumber = max;
max = numbers[i];
}
else if(numbers[i] > secondLargestNumber && numbers[i] != max){
secondLargestNumber = numbers[i];
}
}
System.out.println("the second largest value is" + secondLargestNumber);
}

}


Output:

enter n value
5
enter number
123
enter number
333
enter number
444
enter number
22
enter number
33
the second largest value is333

Friday 25 August 2017

Java Code to find the maximum absolute difference between adjacent pairs of elements in an array of n elements

Problem:

Design and implement an algorithm to find the maximum absolute difference between adjacent pairs of elements in an array of n elements.

Solution:

package array.programs;

import java.util.Scanner;

public class MaxDifferenceOfAdjacentPairs {

int[] numbers;
int n;
int maxDiff;

public static void main(String[] args) {
MaxDifferenceOfAdjacentPairs maxDifferenceOfAdjacentPairs = new MaxDifferenceOfAdjacentPairs();
maxDifferenceOfAdjacentPairs.initializeTheArray();
maxDifferenceOfAdjacentPairs.findMaxDifferenceOfAdjacentPairs();
}

public void initializeTheArray(){
Scanner scanner = new Scanner(System.in);
System.out.println("enter n value");
n = scanner.nextInt();
numbers = new int[n];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findMaxDifferenceOfAdjacentPairs(){
maxDiff = 0;
int diff = 0;
for (int i = 0; i < numbers.length - 1; i++) {
diff = Math.abs(numbers[i] - numbers[i+1]);
if(diff > maxDiff){
maxDiff = diff;
}
}
System.out.println("the maximum difference is " + maxDiff);
}

}


Output:
enter n value
3
enter number
12
enter number
34
enter number
3
the maximum difference is 31


Tuesday 22 August 2017

Java Code to find the maximum in a set and the position where it first occurs and where it last occures

Problem:

Design and implement an algorithm to find the maximum in a set and the position where it first occurs and where it last occurs.

Solution:

package array.programs;

import java.util.Scanner;

public class FirstAndLastOccurencesOfMaximumNumber {

int[] numbers;
int max;
int counter;
int first;
int last;

public static void main(String[] args) {
FirstAndLastOccurencesOfMaximumNumber maximumNumber = new FirstAndLastOccurencesOfMaximumNumber();
maximumNumber.getTheNumbers();
maximumNumber.findMaximum();
maximumNumber.findTheMaximumValueOccurences();
maximumNumber.printTheResult();

}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findMaximum(){
max = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] > max){
max = numbers[i];
}
}
}

public void findTheMaximumValueOccurences(){
for (int i = 0; i < numbers.length; i++) {
if(max == numbers[i]){
if(counter == 0){
first = i + 1;
}
counter++;
last = i + 1;
}
}
}

public void printTheResult(){
System.out.println("Maximum value  " + max + " first occurence is at " + first + " and last occurence is at " + last);
}

}


Output:

how many numbers
5
enter number
123
enter number
44
enter number
322
enter number
344
enter number
333
Maximum value  344 first occurence is at 4 and last occurence is at 4


how many numbers
5
enter number
123
enter number
2
enter number
34
enter number
44
enter number
123
Maximum value  123 first occurence is at 1 and last occurence is at 5


Monday 21 August 2017

Java Code to find the number of times the maximum occurs in an array of n elements.

Problem:

Design an algorithm to find the number of times the maximum occurs in an array of n elements.

Solution:

package array.programs;

import java.util.Scanner;

public class MaximumNumberOccurences {

int[] numbers;
int max;
int counter;

public static void main(String[] args) {
MaximumNumberOccurences maximumNumber = new MaximumNumberOccurences();
maximumNumber.getTheNumbers();
maximumNumber.findMaximum();
maximumNumber.findTheMaximumValueOccurences();
maximumNumber.printTheResult();

}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findMaximum(){
max = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] > max){
max = numbers[i];
}
}
}

public void findTheMaximumValueOccurences(){
for (int i = 0; i < numbers.length; i++) {
if(max == numbers[i]){
counter++;
}
}
}

public void printTheResult(){
System.out.println("the maximum value occurences is " + counter);
}

}


Output:

how many numbers
5
enter number
12
enter number
23
enter number
23
enter number
22
enter number
22
the maximum value occurences is 2

Java Code to find the minimum in an array

Problem:

Design and Implement an algorithm to find the minimum in an array.

Solution:

package array.programs;

import java.util.Scanner;

public class MinimumNumberInArray {

int[] numbers;
int min;

public static void main(String[] args) {
MinimumNumberInArray minimumNumber = new MinimumNumberInArray();
minimumNumber.getTheNumbers();
minimumNumber.findMinimum();
minimumNumber.printTheResult();

}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findMinimum(){
min = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] < min){
min = numbers[i];
}
}
}

public void printTheResult(){
System.out.println("the minimum value is " + min);
}

}


Output:

how many numbers
10
enter number
12
enter number
34
enter number
33
enter number
33
enter number
12
enter number
2
enter number
2
enter number
34
enter number
34
enter number
34
the minimum value is 2


Java Code To Find the Maximum number in a set

Problem:

Find the maximum number in a set of n numbers

Solution:

package array.programs;

import java.util.Scanner;

public class MaximumNumber {

int[] numbers;
int max;

public static void main(String[] args) {
MaximumNumber maximumNumber = new MaximumNumber();
maximumNumber.getTheNumbers();
maximumNumber.findMaximum();
maximumNumber.printTheResult();

}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many numbers");
numbers = new int[scanner.nextInt()];
for (int i = 0; i < numbers.length; i++) {
System.out.println("enter number");
numbers[i] = scanner.nextInt();
}
scanner.close();
}

public void findMaximum(){
max = numbers[0];
for (int i = 0; i < numbers.length; i++) {
if(numbers[i] > max){
max = numbers[i];
}
}
}

public void printTheResult(){
System.out.println("the maximum value is " + max);
}

}


Output:

how many numbers
10
enter number
23
enter number
33
enter number
444
enter number
555
enter number
44
enter number
333
enter number
55667
enter number
444
enter number
33445
enter number
6666
the maximum value is 55667

Array Counting or HISTOGRAMMING

Problem:

Given a set of n student's examination marks in the range 0 to 100 make a count of the number of students that obtained each possible mark.

Solution:

package array.programs;

import java.util.Scanner;

public class ArrayCounting {

int[] marks = new int[101];
int n;

public static void main(String[] args) {
ArrayCounting arrayCounting = new ArrayCounting();
arrayCounting.getTheMarks();
arrayCounting.printTheArray();
}

public void getTheMarks(){
Scanner scanner = new Scanner(System.in);
System.out.println("how many marks");
n = scanner.nextInt();
int tmp = 0;
for(int i = 0; i < n; i++){
System.out.println("enter marks in the range 0 to 100");
tmp = scanner.nextInt();
marks[tmp] = marks[tmp] + 1;
}
scanner.close();
}

public void printTheArray(){
for(int i = 0; i<= 100; i++){
if(marks[i] != 0){
System.out.println(i + " marks obtained by " +  marks[i] + " students");
}
}
}



}


Output:

how many marks
10
enter marks in the range 0 to 100
23
enter marks in the range 0 to 100
3
enter marks in the range 0 to 100
22
enter marks in the range 0 to 100
56
enter marks in the range 0 to 100
55
enter marks in the range 0 to 100
44
enter marks in the range 0 to 100
55
enter marks in the range 0 to 100
55
enter marks in the range 0 to 100
55
enter marks in the range 0 to 100
55
3 marks obtained by 1 students
22 marks obtained by 1 students
23 marks obtained by 1 students
44 marks obtained by 1 students
55 marks obtained by 5 students
56 marks obtained by 1 students


Wednesday 9 August 2017

Java Code to shuffle the array

Problem:

Design an algorithm that places the kth element of an array in position 1, the (k+1) th element in position 2 etc. The original 1st element is placed at (n-k+1) and so on.

Solution:

package array.programs;

import java.util.Scanner;

public class ShuffleTheArray {

static int number;
static int[] numberArray;
Scanner scanner;
static int shufflePosition;

public static void main(String[] args) {
ShuffleTheArray shuffleTheArray = new ShuffleTheArray();
shuffleTheArray.getTheNumbers();
System.out.println("before");
shuffleTheArray.printTheArray();
shuffleTheArray.shiftK2(numberArray, number, shufflePosition);
System.out.println("after");
shuffleTheArray.printTheArray();

}

public void getTheNumbers(){
scanner = new Scanner(System.in);
System.out.println("enter how many numbers");
number = scanner.nextInt();
numberArray = new int[number];
initializeTheNumbers();
System.out.println("enter from which element of an array want to starts");
shufflePosition = scanner.nextInt();
scanner.close();
}

public void initializeTheNumbers(){
for(int i = 0; i < number; i++){
System.out.println("enter the number");
numberArray[i] = scanner.nextInt();
}
}

public void printTheArray(){
for(int i = 0; i< number; i++){
System.out.print(numberArray[i] + " ");
}
}

public void shuffleTheArray(){
int temp = 0;
for (int i = 0; i < numberArray.length; i++) {
temp = numberArray[i];
numberArray[i] =  numberArray[shufflePosition-1- i];
numberArray[number-shufflePosition] = temp;
shufflePosition++;
}
}

void shiftK2(int []arr, int size, int k)
{
//kth elemen to 1st element, k+1th to 2nd...and so on... Dromey Pg. 143. Exercise 4.1.3
//Method 2. Calculate GCD of n, k then shift blocks. Refer http://www.geeksforgeeks.org/array-rotation/ for images.
int i = size, j = k;
while(i != j)
{
if(i > j)
i = i-j;
else
j = j-i;
}
i=i-1;
for(; i>=0; i--)
{
int temp = arr[i];
int p;
j = i;
while(true)
{
p = j+k;
p = p%size;
arr[j] = arr[p];
j = p;
if((j+k)%size == i)
{
arr[j] = temp;
break;
}
}

}


}

}


Output:

enter how many numbers
7
enter the number
1
enter the number
2
enter the number
3
enter the number
4
enter the number
5
enter the number
6
enter the number
7
enter from which element of an array want to starts
3
before
1 2 3 4 5 6 7 after
4 5 6 7 1 2 3 

Sunday 6 August 2017

Java Code to revers the array by using two indices

Problem:

Implement the array reversal algorithm that starts out with two indices, i=0 and j = n+1. With each iteration i is increased and j is decreased for i<j

Solution:

package array.programs;

import java.util.Scanner;

public class ArrayOrderReversal {

int number;
int[] numberArray;
Scanner scanner;

public static void main(String[] args) {
ArrayOrderReversal arrayOrderReversal = new ArrayOrderReversal();
arrayOrderReversal.getTheNumbers();
System.out.println("Before reversal");
arrayOrderReversal.printTheArray();
arrayOrderReversal.reverseTheOrder();
System.out.println("\n After reversal");
arrayOrderReversal.printTheArray();
}

public void getTheNumbers(){
scanner = new Scanner(System.in);
System.out.println("enter how many numbers");
number = scanner.nextInt();
numberArray = new int[number];
initializeTheNumbers();
scanner.close();
}

public void initializeTheNumbers(){
for(int i = 0; i < number; i++){
System.out.println("enter the number");
numberArray[i] = scanner.nextInt();
}
}

public void reverseTheOrder(){
int temp = 0;
int i = 0;
int j = number + 1;
for (; i < j; i++, j--) {
temp = numberArray[i];
numberArray[i] = numberArray[number  - i - 1];
numberArray[number - i - 1 ] = temp;
}
}

public void printTheArray(){
for(int i = 0; i< number; i++){
System.out.print(numberArray[i] + " ");
}
}



}


Output:

enter how many numbers
7
enter the number
1
enter the number
2
enter the number
3
enter the number
4
enter the number
5
enter the number
6
enter the number
7
Before reversal
1 2 3 4 5 6 7
 After reversal
7 6 5 4 3 2 1

Java Code to reverse the array

Problem:

Rearrange the elements in an array so that they appear in reverse order.

Solution:

package array.programs;

import java.util.Scanner;

public class ArrayOrderReversal {

int number;
int[] numberArray;
Scanner scanner;

public static void main(String[] args) {
ArrayOrderReversal arrayOrderReversal = new ArrayOrderReversal();
arrayOrderReversal.getTheNumbers();
System.out.println("Before reversal");
arrayOrderReversal.printTheArray();
arrayOrderReversal.reverseTheOrder();
System.out.println("\n After reversal");
arrayOrderReversal.printTheArray();
}

public void getTheNumbers(){
scanner = new Scanner(System.in);
System.out.println("enter how many numbers");
number = scanner.nextInt();
numberArray = new int[number];
initializeTheNumbers();
scanner.close();
}

public void initializeTheNumbers(){
for(int i = 0; i < number; i++){
System.out.println("enter the number");
numberArray[i] = scanner.nextInt();
}
}

public void reverseTheOrder(){
int temp = 0;
for (int i = 0; i < number/2; i++) {
temp = numberArray[i];
numberArray[i] = numberArray[number  - i - 1];
numberArray[number - i - 1 ] = temp;
}
}

public void printTheArray(){
for(int i = 0; i< number; i++){
System.out.print(numberArray[i] + " ");
}
}



}


Output:

enter how many numbers
7
enter the number
1
enter the number
2
enter the number
3
enter the number
4
enter the number
5
enter the number
6
enter the number
7
Before reversal
1 2 3 4 5 6 7
 After reversal
7 6 5 4 3 2 1

Wednesday 2 August 2017

Java Code to generate the pseudo-random numbers

Problem:

Use the linear congruential method to generate a uniform set of pseudo-random numbers.
x(n+1) = (axn + b) mod m

Solution:

package com.myprograms;

import java.util.ArrayList;
import java.util.List;

public class PseudoRandomNumberGeneration {

List<Integer> randomNumbers = new ArrayList<Integer>();
int x = 5;
int a = 137;
int b = 1;
int m = 256;
int how_many = 256;

public static void main(String[] args) {
PseudoRandomNumberGeneration pseudoRandomNumberGeneration = new PseudoRandomNumberGeneration();
pseudoRandomNumberGeneration.generateRandomNumbers();
pseudoRandomNumberGeneration.printTheResult();

}

public void generateRandomNumbers(){
for (int i = 0; i < how_many; i++) {
x = ((a * x) + b)%m;
randomNumbers.add(x);
}
}

public void printTheResult(){
System.out.println("the random numbers are " + randomNumbers);
}

}


Output:

the random numbers are [174, 31, 152, 89, 162, 179, 204, 45, 22, 199, 128, 129, 10, 91, 180, 85, 126, 111, 104, 169, 114, 3, 156, 125, 230, 23, 80, 209, 218, 171, 132, 165, 78, 191, 56, 249, 66, 83, 108, 205, 182, 103, 32, 33, 170, 251, 84, 245, 30, 15, 8, 73, 18, 163, 60, 29, 134, 183, 240, 113, 122, 75, 36, 69, 238, 95, 216, 153, 226, 243, 12, 109, 86, 7, 192, 193, 74, 155, 244, 149, 190, 175, 168, 233, 178, 67, 220, 189, 38, 87, 144, 17, 26, 235, 196, 229, 142, 255, 120, 57, 130, 147, 172, 13, 246, 167, 96, 97, 234, 59, 148, 53, 94, 79, 72, 137, 82, 227, 124, 93, 198, 247, 48, 177, 186, 139, 100, 133, 46, 159, 24, 217, 34, 51, 76, 173, 150, 71, 0, 1, 138, 219, 52, 213, 254, 239, 232, 41, 242, 131, 28, 253, 102, 151, 208, 81, 90, 43, 4, 37, 206, 63, 184, 121, 194, 211, 236, 77, 54, 231, 160, 161, 42, 123, 212, 117, 158, 143, 136, 201, 146, 35, 188, 157, 6, 55, 112, 241, 250, 203, 164, 197, 110, 223, 88, 25, 98, 115, 140, 237, 214, 135, 64, 65, 202, 27, 116, 21, 62, 47, 40, 105, 50, 195, 92, 61, 166, 215, 16, 145, 154, 107, 68, 101, 14, 127, 248, 185, 2, 19, 44, 141, 118, 39, 224, 225, 106, 187, 20, 181, 222, 207, 200, 9, 210, 99, 252, 221, 70, 119, 176, 49, 58, 11, 228, 5]

Java Code to print all perfect numbers between 1 and 500

Problem:

A perfect number is one whose divisors add up to the number.

Design and implement an algorithm that prints all perfect numbers between 1 and 500.

Solution:

package com.myprograms;

import java.util.ArrayList;
import java.util.List;

public class PerfectNumbers {

List<Integer> divisorsList = new ArrayList<Integer>();
List<Integer> perfectNumbersList = new ArrayList<Integer>();


public static void main(String[] args) {
PerfectNumbers perfectNumbers = new PerfectNumbers();
perfectNumbers.findThePerfectNumbers();
perfectNumbers.printTheResult();
}

public void findThePerfectNumbers(){
for(int i = 1; i <= 500; i++){
findTheDivisors(i);
if(isPerfectNumber(i)){
perfectNumbersList.add(i);
}
}
}

public void findTheDivisors(int number) {
divisorsList = new ArrayList<Integer>();
for (int i = 1; i < number; i++) {
if(number%i == 0){
divisorsList.add(i);
}
}
}

public boolean isPerfectNumber(int number){
boolean result = false;
int divisorsSum = 0;
for(Integer i: divisorsList){
divisorsSum = divisorsSum + i;
}
if(divisorsSum == number){
result = true;
}
return result;
}

public void printTheResult(){
System.out.println("the perfect numbers between 1 and 500 are: " + perfectNumbersList);
}

}



Output:

the perfect numbers between 1 and 500 are: [6, 28, 496]


Java Code to tests the whether a given pair of numbers are amicable numbers

Problem:

Amicable numbers are pairs of numbers each of whose divisors add to the other number. Design and implement an algorithm that tests the whether a given pair of numbers are amicable numbers.

Solution:

package com.myprograms;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class AmicableNumbers {

int n1;
int n2;
List<Integer> firstNumberDivisors = new ArrayList<Integer>();
List<Integer> secondNumberDivisors = new ArrayList<Integer>();


public static void main(String[] args) {
AmicableNumbers amicableNumbers = new AmicableNumbers();
amicableNumbers.getTheNumbers();
amicableNumbers.findTheDivisors();
amicableNumbers.printTheDivisors();
amicableNumbers.printTheResult();
}

public void getTheNumbers(){
Scanner scanner = new Scanner(System.in);
System.out.println("enter the first number in the pair");
n1 = scanner.nextInt();
System.out.println("enter the second number in the pair");
n2 = scanner.nextInt();
scanner.close();
}

public void findTheDivisors(){
for (int i = 1; i < n1; i++) {
if(n1%i == 0){
firstNumberDivisors.add(i);
}
}

for(int i = 1; i < n2; i++){
if(n2%i == 0){
secondNumberDivisors.add(i);
}
}
}

public void printTheDivisors(){
System.out.println("first number divisors are " + firstNumberDivisors);
System.out.println("second number divisors are " + secondNumberDivisors);
}
public boolean areAmicableNumbers(){
boolean result = false;
int firstNumberDivisorSum = 0;
int secondNumberDivisorsSum = 0;
for(Integer i: firstNumberDivisors){
firstNumberDivisorSum = firstNumberDivisorSum + i;
}
for(Integer i: secondNumberDivisors){
secondNumberDivisorsSum = secondNumberDivisorsSum + i;
}
if(firstNumberDivisorSum == n2 && secondNumberDivisorsSum == n1){
result = true;
}
return result;
}

public void printTheResult(){
System.out.println("Are the given numbers are amicable numbers ?? " + areAmicableNumbers());
}

}


Output:

enter the first number in the pair
220
enter the second number in the pair
284
first number divisors are [1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110]
second number divisors are [1, 2, 4, 71, 142]
Are the given numbers are amicable numbers ?? true

enter the first number in the pair
1184
enter the second number in the pair
1210
first number divisors are [1, 2, 4, 8, 16, 32, 37, 74, 148, 296, 592]
second number divisors are [1, 2, 5, 10, 11, 22, 55, 110, 121, 242, 605]
Are the given numbers are amicable numbers ?? true

enter the first number in the pair
221
enter the second number in the pair
280
first number divisors are [1, 13, 17]
second number divisors are [1, 2, 4, 5, 7, 8, 10, 14, 20, 28, 35, 40, 56, 70, 140]
Are the given numbers are amicable numbers ?? false

Program for primality test in JAVA

Problem: ============= Program for primality test in JAVA What is primality test? A primality test is an algorithm for determining wh...