20.6k views
4 votes
Write a program that declares an array of size 1,230 and stores the first 1,230 prime numbers in this array. The program then uses the first 1,230 prime numbers to determine if a number between 2 and 100,000,000 is prime. If a number is not prime, then output at least one of its prime factors.

1 Answer

3 votes

Answer:

The complete question is :

A positive integer n is called prime if n > 1 and the only factors of n are 1 and n. It is known that the positive integer n>1 is prime if n is not divisible by any prime integer m≤n. The 1230th prime number is 10,007. Let t be an integer such that 2≤t≤100,000,000. Then t is prime if either t is equal to one of the first 1230 prime numbers or t is not divisible by any of the first 1230 prime numbers. Write a program that declares an array of size 1,230 and stores the first 1,230 prime numbers in this array. The program then uses the first 1,230 prime numbers to determine if a number between 2 and 100,000,000 is prime. If a number is not prime, then output at least one of its prime factors.

Explanation:

The program is :

#include<iostream>

#include<cmath>

using namespace std;

const int SIZE = 1230;

bool isPrime(int number);

void first1230PrimeNum(int list[], int length);

void primeTest(int num, int list[], int length);

int main()

{

int primeList[SIZE];

int number;

first1230PrimeNum(primeList, SIZE);

cout<<"Enter an integer between 2 and 100,000,000: ";

cin>>number;

cout<<endl;

primeTest(number, primeList, SIZE);

system("pause");

return 0;

}

bool isPrime(int number)

{

int i; //to iterate

//loop till sqrt(number)

for(i=2; i<=sqrt(number); i++)

{

//if any factor

if(number%i == 0)

return false;//return false

}

return true; //otherwise return true

}

void first1230PrimeNum(int list[], int length)

{

int i=0, number = 2; //i to itrate and number to test prime

while(i<length) //get 1230 primes

{

if(isPrime(number)) //check if prime or not

{

list[i] = number; //add it to list

i++; //increment i

}

number++; //increment number

}

}

void primeTest(int num, int list[], int length)

{

int i; //i to iterate

//loop through list

for(i=0; i<length; i++)

{

//if num is in list then it is prime

if(num == list[i])

{

cout<<num<<" is a prime"<<endl;

return;

}

//if divisible by any number then not a prime

if(num % list[i] == 0)

{

cout<<num<<" is not a prime"<<endl;

cout<<"One of the prime factor: "<<list[i]<<endl;

return;

}

}

cout<<num<<" is a prime"<<endl;

}

OUTPUT :

Enter an integer between 2 and 100,000,000 : 104659

104659 is a prime.

User AndreaF
by
4.5k points