+3

I have made a program on prime number but when i run the program and enter a number it says it's not a prime number.what's wrong

https://code.sololearn.com/cX9lWbD775yH/?ref=app

c++

1/26/2020 3:44:05 PM

Disha Dey

40 Answers

New Answer

+4

Mirielle🐶 Actually 1 is a prime number by definition, so only 0 should be excluded. Disha Dey The best solution is to create a function which returns whether or not an integer is a prime number: #include<iostream> bool is_prime(int n) { if (n == 0) { return false; } else if (n < 0) { n *= -1; } for (int i = 2; i < (n/2)+1; i++) { if (n % i == 0) { return false; } } return true; } int main(int argc, const char *argv[]) { std::cout << is_prime(31) << std::endl; return 0; } https://code.sololearn.com/cMufni2rO4mT/?ref=app https://code.sololearn.com/c8VMWT7STHK7/?ref=app https://code.sololearn.com/wg6lZE1tg98c/?ref=app If you want output instead of boolean return value, just add another function: void print_prime(const int n) { std::cout << n << " is "; if (!is_prime(n)) { std::cout << "not "; } std::cout << "a prime number!" << std::endl; } and call this from your int main() function instead.

+2

you should make a corner case for number less than or equals to 1 since it's obvious they'll never be prime. if (number <= 1) // not a prime Then if otherwise, you can loop for (int i = 2; i < number; i++)       if (number % i == 0)            // no is a prime     // no is not a prime

+2

Try this code for beginners please upvote if it helped *_* #include<stdio.h> #include<conio.h> #include<iostream.h> void main() { int n, f, p=0; cout<<"enter any no to check if it is prime"; cin>>n; for(f=1;f<=n;f++) { if (n%f==0) p++; } cout<<\n<<p; if(p==2) cout<<"it is a prime number"; else cout<<"it is not a prime number"; getch(); }

+1

Disha Dey It's working fine with logic but errors in class declarations and naming. ... 1) Remove 3rd line int main() put class prime{ 2)void display () missing { 3) comment clrscr() 4) make main() return type int, not void

+1

#include <iostream> using namespace std; class prime { public: int num, i, j = 0; public: void display(){ cout << "Enter number: "; cin >> num; for (i = 2; i < num; i++) { if ((num % i) == 0) { j++; } } if (j == 0 && num !=1) cout <<" is a prime number"; else cout <<" is not a prime number"; } }; int main() { //clrscr(); prime p; p.display(); }

0

But the answer is coming it is not a prime number even if i write a prime number or not

0

Disha Dey run this exactly same.. #include <iostream> using namespace std; class prime{ int num, i, j = 0; public: void display(){ cout << "Enter number: "; cin >> num; for (i = 1; i <= num; i++) if ((num % i) == 0) j++; if (j == 2) cout <<num<<" is a prime number"; else cout <<num<<" is not a prime number"; }}; int main() { // clrscr(); prime p; p.display(); return 0; }

0

In 4th line when i write j=0 a error comes " cannot initialize a class member here"

0

Variable j you declared as private, you can use it in any where in that class but not outside. And in your program, am not getting any warnings, as I pasted same code in above post. Run it once... In case, if you assign outside class, then error comes...

0

#include <iostream> using namespace std; int main() { int num, i, j; public: void display() cout << "Enter number: "; cin >> num; for (i = 1; i <= num; i++) { if ((num % i) == 0) { j++; } } if (j == 0) cout <<" is a prime number"; else cout <<" is not a prime number"; } }; void main() { clrscr(); prime p; p.display(); return 0; } If i write like this and run the program and i enter a number for example 17 it says it's not a prime number

0

You are checking as j==0 instead of j==2.

0

Then what should i write.I'm confused little bit.

0

Is this above program, running on your compiler correctly ? Prime 17 1%17=0 =>j=1 17%17=0 =>j=2. //for any prime number only 2 factors exists. So condition must be Then if(j==2) cout<<"prime"; //else no... Your condition in 1st posted code is correct. Keep the same..

0

But answer is not coming

0

Line 12 to 20 copy and paste in your compiler. It will be same any compiler.. https://code.sololearn.com/cbDpNuG6v8Vf/?ref=app

0

write j=0 a error comes " cannot initialize a class member here" and if i remove and run the program then i am not getting prime number

0

I'm not able to understand how you getting error? While the Program I posted above giving me correct output without errors.. What are the changes with above one comparing with your which you are running..? Edit: Are your writing in if like j==2 or j=2?

0

Please write more readable

0

https://code.sololearn.com/Wu01BqHw2LOY/#html

0

void main() { int a; clrscr(); printf(“ Enter a number “); scanf(“%d”,&a); if(a==1) printf(“ %d is not prime “, a); else if(a==2 || a==3 || a==5 || a==7) printf(“ %d is prime “, a); else { if(a%2==0 || a%3==0 || a%5==0 || a%7==0) printf(“ %d is composite “, a); else printf(“ %d is prime “, a); } getch(); }