![]() |
Simple simple program error...please help
In my simple program I am getting this error..please help
I am trying to find integers where 65537i + 3551j = 1 error: cannot convert `__complex__ int' to `long int' in assignment #include <iostream> #include <complex> #include <cmath> using namespace std; int main () { long x=0; int y=0; for (long i=0; i<65537; i++) { for (long j=0; j<3511; j++) { x=65337i + 3511j; if (x=1) cout <<"i: "<< i << " j: "<< j<< endl; } } return 0; } |
Re: Simple simple program error...please help
<tasheeta@gmail.com> wrote in message news:1130805155.228386.200240@z14g2000cwz.googlegr oups.com... > In my simple program I am getting this error..please help > > I am trying to find integers where 65537i + 3551j = 1 > > error: cannot convert `__complex__ int' to `long int' in > assignment > > > #include <iostream> > #include <complex> > #include <cmath> > > using namespace std; > > int main () > { > long x=0; > int y=0; > > for (long i=0; i<65537; i++) > { > for (long j=0; j<3511; j++) > { > x=65337i + 3511j; What is this? 3511j is not a number. 65537i is probably not a number, although it might be 65537 as an int. I think you want x = i + j; here > if (x=1) > cout <<"i: "<< i << " j: "<< j<< endl; > } > } > > return 0; > } > |
Re: Simple simple program error...please help
tasheeta@gmail.com wrote:
> In my simple program I am getting this error..please help > > I am trying to find integers where 65537i + 3551j = 1 > > error: cannot convert `__complex__ int' to `long int' in > assignment > > > #include <iostream> > #include <complex> > #include <cmath> ditch the last two headers: you do not use them anyway. > > using namespace std; > > int main () > { > long x=0; > int y=0; > > for (long i=0; i<65537; i++) > { > for (long j=0; j<3511; j++) > { > x=65337i + 3511j; make that: x= 65337*i + 3511*j; > if (x=1) probably you mean: if ( x == 1 ) > cout <<"i: "<< i << " j: "<< j<< endl; > } > } > > return 0; > } Also: a) running the corrected program, you might be in for a little surprise. It will not find any numbers doing the trick: you are arbitrarily restricted the search space for i and j, and your bounds are way off (note that it simply cannot work for i and j both positive!). b) You might consider reading on GCDs and the Euclidean Algorithm. It can be extended to solve your problem. Best Kai-Uwe Bux |
Re: Simple simple program error...please help
Kai...thanks so much for your advice
why am i restricted? i thought that c++ integers can span a certain space..along the lines of 2^32..??? i'm familiar with the algorithms, am i required to write my own class to make this work? |
Re: Simple simple program error...please help
toy wrote:
> Kai...thanks so much for your advice It's Kai-Uwe. > why am i restricted? i thought that c++ integers can span a certain > space..along the lines of 2^32..??? Please quote what you are refering to. I wrote: > a) running the corrected program, you might be in for a little surprise. > It will not find any numbers doing the trick: you are arbitrarily > restricted the search space for i and j, and your bounds are way off > (note that it simply cannot work for i and j both positive!). And this in not even correct English. I should have written: .... you arbitrarily restricted the search space for i and j, ... > i'm familiar with the algorithms, am i required to write my own class > to make this work? *Which* algorithm? To make *what* work? Best Kai-Uwe Bux |
Re: Simple simple program error...please help
Kai-Uwe, I apologize for abbreviating your name. If I change the search
space for i and j to count downward, (as in i--, j--)..will this work? or need i write a class or input code to execute the euclidean algorithm in some form? |
Re: Simple simple program error...please help
Ok I changed the code to decrement i and j as opposed to
increment...the for loops will also execute until i and j are their NEGATIVE values. i still am not generating a solution. can u help? |
Re: Simple simple program error...please help
toy wrote:
> Ok I changed the code to decrement i and j as opposed to > increment...the for loops will also execute until i and j are their > NEGATIVE values. > > i still am not generating a solution. can u help? Sure. Here is a simple version of Euclids algorithm: #include <iostream> #include <algorithm> unsigned long gcd_euclid ( unsigned long a, unsigned long b ) { if ( b < a ) { std::swap( a, b ); } while ( a != 0 ) { // now b = a*q + r for some q and r. (division with remainder) unsigned long q = b / a; unsigned long r = b % a; std::cout << r << " = " << b << " - " << a << "*" << q << '\n'; b = a; a = r; } return ( b ); } int main ( void ) { std::cout <<gcd_euclid( 65537, 3551 ) << '\n'; } If you run this, you find: the output 1619 = 65537 - 3551*18 313 = 3551 - 1619*2 54 = 1619 - 313*5 43 = 313 - 54*5 11 = 54 - 43*1 10 = 43 - 11*3 1 = 11 - 10*1 <--- important information 0 = 10 - 1*10 The magic of the algorithm is that all these equations are actually true. Now, you can work backwards: 1 = 11 - 10 * 1; = 11 - ( 43 - 11 * 3 ) * 1 = 11 * 4 - 43 = ( 54 - 43 ) * 4 - 43 = 54*4 - 43*5 = 54*4 - ( 313 - 54*5) * 5 = 313*(-5) + 54*29 = ... Another way is working forward: 1619 = 65537 - 3551*18 313 = 3551 - 1619*2 = 3551 - ( 65537-3551*18 ) * 2 = 65537*(-2) + 3551*37 54 = 1619 - 313*5 = ( 65537-3551*18 ) - ( 65537*(-2) + 3551*37 ) * 5 = 65537*someting + 3551*something_else .... keep going until you get .... 1 = 65537*something + 3551*something_else These ideas should get you started. Best Kai-Uwe Bux |
Re: Simple simple program error...please help
you are a LIFESAVER
thanks sooo much! |
Re: Simple simple program error...please help
* Kai-Uwe Bux:
> > [relevant info, gcd] > > These ideas should get you started. Just tell me how you saw what he was trying to do? Even if it's off-topic. -- A: Because it messes up the order in which people normally read text. Q: Why is it such a bad thing? A: Top-posting. Q: What is the most annoying thing on usenet and in e-mail? |
| All times are GMT. The time now is 05:58 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.