Hello,
I am trying to develop a c++ program that would, given any integer, decide whether it is prime. My program responds for small numbers, but doesn't if the number is great enough!
Consider this code, which is very basic, and which responds for n=11117, but falls through (hangs) for 111127
The following program responds correctly for n=1318699, which is prime and n=1318690, which is not; but it tells that 111111111112 is prime, which the number is not! Why is the problem?Code:#include<iostream> #include<cmath> using namespace std; bool divisibility(int i,int j) {float k; k=float(j); if(i==0) return false; else if(j/i ==k/i) return true; else return false;} int gcd(int i,int j) { if(divisibility(i,j)==true) return i; else if(divisibility(j,i)==true) return j; else if(i==1||j==1) return 1; else { int k,l; if(j<i) k=j;else k=i; if(k>0) {while(k>0) {if(divisibility(k,i)==true&&divisibility(k,j)==true) return k; else k--;} } else return 1; } } bool coprime(int i,int j) {if(gcd(i,j)==1) return true; else return false;} bool primeness(int n) {int i; if(n>1) {int i=1; if((i-1)<n/2){while((i-1)<=n/2){if(coprime(i,n)==true){if((i-1)==n/2)return true;else i++;}else return false;}}} else return false; } int prime(int n) {int i=n-1;int j; if(n>1) {j=prime(n-1)+1; while(i>0) {if(coprime(prime(i),j)==true) {if(i==1) return j; else i--;} else {i=n-1;j++;} } } else return 2; } int main() {int n; cout<<"n="<<endl; cin>>n; if(primeness(n)==true) cout<<"prime"<<endl; return 0; }
Code:#include<iostream> #include<cmath> using namespace std; bool primeness(int m) {int i=2;float k,y;int j; y=m; bool pr=true; while(i<=m/2) {k=y/i;j=m/i; if(j==k) pr= false; i++;} return (pr); } int main() {int n; cout<<"n="<<endl; cin>>n; if(primeness(n)==true) cout<<"prime"<<endl; return 0; }
Thanks,
Saurav


LinkBack URL
About LinkBacks




Reply With Quote




Bookmarks
Algorithms and Data Structures
Java tutorials
Algorithms Forum