import mpi.*;
public class MPITest {
public static void main(String[] args) throws MPIException {
MPI.Init(args);
int rank = MPI.COMM_WORLD.Rank();
int size = MPI.COMM_WORLD.Size();
int n = 0;
if(rank == 0) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the value of n: ");
n = scanner.nextInt();
}
MPI.COMM_WORLD.Bcast(new int[] { n }, 0, 1, MPI.INT, 0);
if(rank == 0) {
System.out.println("Even numbers from 1 to " + n + ": ");
for(int i = 2; i <= n; i += 2) {
System.out.print(i + " ");
}
System.out.println();
} else if(rank == 1) {
int a = 0, b = 1, c;
System.out.println("Fibonacci series from 1 to " + n + ": ");
System.out.print(a + " " + b + " ");
for(int i = 2; i < n; i++) {
c = a + b;
System.out.print(c + " ");
a = b;
b = c;
}
System.out.println();
} else if(rank == 2) {
int sum = 0;
for(int i = 1; i <= n; i++) {
sum += i;
}
System.out.println("Sum of numbers from 1 to " + n + ": " + sum);
} else if(rank == 3) {
System.out.println("Prime numbers between 1 to " + n + ": ");
for(int i = 2; i <= n; i++) {
boolean isPrime = true;
for(int j = 2; j < i; j++) {
if(i % j == 0) {
isPrime = false;
break;
}
}
if(isPrime) {
System.out.print(i + " ");
}
}
System.out.println();
}
MPI.Finalize();
}
}
aW1wb3J0IG1waS4qOwoKcHVibGljIGNsYXNzIE1QSVRlc3QgewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIE1QSUV4Y2VwdGlvbiB7CiAgICAgICAgTVBJLkluaXQoYXJncyk7CiAgICAgICAgaW50IHJhbmsgPSBNUEkuQ09NTV9XT1JMRC5SYW5rKCk7CiAgICAgICAgaW50IHNpemUgPSBNUEkuQ09NTV9XT1JMRC5TaXplKCk7CiAgICAgICAgaW50IG4gPSAwOwoKICAgICAgICBpZihyYW5rID09IDApIHsKICAgICAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiRW50ZXIgdGhlIHZhbHVlIG9mIG46ICIpOwogICAgICAgICAgICBuID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgfQoKICAgICAgICBNUEkuQ09NTV9XT1JMRC5CY2FzdChuZXcgaW50W10geyBuIH0sIDAsIDEsIE1QSS5JTlQsIDApOwoKICAgICAgICBpZihyYW5rID09IDApIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFdmVuIG51bWJlcnMgZnJvbSAxIHRvICIgKyBuICsgIjogIik7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IDI7IGkgPD0gbjsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGkgKyAiICIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgIH0gZWxzZSBpZihyYW5rID09IDEpIHsKICAgICAgICAgICAgaW50IGEgPSAwLCBiID0gMSwgYzsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaWJvbmFjY2kgc2VyaWVzIGZyb20gMSB0byAiICsgbiArICI6ICIpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGEgKyAiICIgKyBiICsgIiAiKTsKICAgICAgICAgICAgZm9yKGludCBpID0gMjsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgYyA9IGEgKyBiOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChjICsgIiAiKTsKICAgICAgICAgICAgICAgIGEgPSBiOwogICAgICAgICAgICAgICAgYiA9IGM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgfSBlbHNlIGlmKHJhbmsgPT0gMikgewogICAgICAgICAgICBpbnQgc3VtID0gMDsKICAgICAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgICAgIHN1bSArPSBpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3VtIG9mIG51bWJlcnMgZnJvbSAxIHRvICIgKyBuICsgIjogIiArIHN1bSk7CiAgICAgICAgfSBlbHNlIGlmKHJhbmsgPT0gMykgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlByaW1lIG51bWJlcnMgYmV0d2VlbiAxIHRvICIgKyBuICsgIjogIik7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgICAgICBib29sZWFuIGlzUHJpbWUgPSB0cnVlOwogICAgICAgICAgICAgICAgZm9yKGludCBqID0gMjsgaiA8IGk7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmKGkgJSBqID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihpc1ByaW1lKSB7CiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChpICsgIiAiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKICAgICAgICB9CgogICAgICAgIE1QSS5GaW5hbGl6ZSgpOwogICAgfQp9CgoK