I’m not trying to ask you guys to help me to do homework because i’ve do much research and also try to program it myself but still i encounter problem and i think so far i’ve know where the problem is but still no solution can be figure out by me :
The Code
#include <iostream>
#include <string>
#include <cmath>
int main(void)
{
using namespace std;
int num;
int max;
string answer = "";
cin >> num;
for(int i = 2 ; i < num ; i++)
{
max = sqrt(i);
if(max < 2) // This must be done beacuse sqrt(2) and sqrt(3)
{ // is 1 which will make it become nonprime.
answer += i;
answer += ' ';
continue;
}
for(int j = 2 ; j <= max ; j++) // Trial division ,divide each by integer
{ // more than 1 and less than sqrt(oftheinteger)
if(i % j == 0)
break;
else if(j == max)
{
answer += i + " ";
answer += ' ';
}
}
}
cout <<"The answer is " << answer ;
return 0;
}
The Question
1.)This program will prompt for a number from user and return all the prime number before it(e.g if user input 9 : then the answer is 2 , 3 , 5 , 7).
2.)I think the wrong part is the string and integer concatenation , till now i still puzzle how to concat string and integer in C++(Previous Javascript programmer so i’m accustomed to using + as string-int concat operator)
3.)Beside the problem i mention above , so far i’ve go through the code and find none of other problem exist.If any expert manage to find any , mind to point it out to enlighten me??
4.)If there’s any mistake in terms of coding or algorithm or anything done by me , please don’t hesitate to point it out , i’m willing to learn.
Thanks for spending time reading my question
The usual way to perform formatting in C++ is to use
streams.In this situation, you can use a
std::stringstreamto accumulate the results, and then convert it into a string when you do the final printing.Include
sstreamto get the required type and function declarations:Declare
answerto be astd::stringstreaminstead of astd::string:and then wherever you have:
, replace it with:
To get a
std::stringout ofanswer, useanswer.str():