454,382 Members | 1,567 Online Need help? Post your question and get tips & solutions from a community of 454,382 IT Pros & Developers. It's quick & easy.

 P: n/a 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 #include #include 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; } Nov 1 '05 #1
14 Replies

 P: n/a wrote in message news:11**********************@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 #include #include 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; } Nov 1 '05 #2

 P: n/a ta******@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 #include #include 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 Nov 1 '05 #3

 P: n/a 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? Nov 1 '05 #4

 P: n/a 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 Nov 1 '05 #5

 P: n/a 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? Nov 1 '05 #6

 P: n/a 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? Nov 1 '05 #7

 P: n/a 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 #include 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 <

 P: n/a you are a LIFESAVER thanks sooo much! Nov 1 '05 #9

 P: n/a * 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? Nov 1 '05 #10

 P: n/a @alf what do you mean? I understood because I have prior knowledge and familiarity with Euclid's algorithm..and his explanation was very clear and concise. why do you ask? Nov 1 '05 #11

 P: n/a "toy" wrote in news:11*********************@o13g2000cwo.googlegro ups.com: Euclid's Algo?? Which one.? Neo -- Nov 1 '05 #12

 P: n/a Alf P. Steinbach wrote: * 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. Easy: the following line from the original post gives it away: I am trying to find integers where 65537i + 3551j = 1 What follows is code that clearly tries a brute force attack to find i and j. After fixing, the relevant portion looks like so: for (long i=0; i<65537; i++) { for (long j=0; j<3511; j++) { { x=65337 * i + 3511 * j; if (x==1) { cout <<"i: "<< i << " j: "<< j<< endl; } }} Best Kai-Uwe Bux Nov 1 '05 #13

 P: n/a Kai-Uwe Bux wrote: Alf P. Steinbach wrote: * 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. Easy: the following line from the original post gives it away: I am trying to find integers where 65537i + 3551j = 1 What follows is code that clearly tries a brute force attack to find i and j. After fixing, the relevant portion looks like so: for (long i=0; i<65537; i++) { for (long j=0; j<3511; j++) { { x=65337 * i + 3511 * j; if (x==1) { cout <<"i: "<< i << " j: "<< j<< endl; } }} Don't you think he should include some negative integers as well, or he might waste computer resources for nothing. hint: neither (0,1) nor (1,0) doesn't work, so... Nov 1 '05 #14

 P: n/a toy wrote: @alf what do you mean? I understood because I have prior knowledge and familiarity with Euclid's algorithm..and his explanation was very clear and concise. why do you ask? I guess because this looks like a homework assignment in basic loop handling. And for that, a teacher is not happy with a solution based on euclids algorithm (probably because a newbie is not able to write one on his own). -- Karl Heinz Buchegger kb******@gascad.at Nov 2 '05 #15

### This discussion thread is closed

Replies have been disabled for this discussion. 