コードは次のとおりです。
#include <iostream>
#include <ctype.h>
#include <iomanip>
using namespace std;
class Project3
{
public:
void factorcalc()
{
while (i<5000000){
++i;
factor = prime/i;
if (factor == (long long int)factor){
//if (modf(primeoverthree, 0) == 0){
cout << "Factor is: " << setprecision(12) << factor << endl;
cout << "Denominator is: " << setprecision(12) << i << endl;
++x;
factorarray[x] = factor;
}
else{/*empty else statement*/}
}
}
void displayfactorresults ()
{
for (x=0; x<9; ++x)
if (factorarray[x]%2 == 0 && factorarray[x]%3 == 0 && factorarray[x]%5 == 0 && factorarray[x]%7 == 0){
cout << factorarray[x] << setprecision(12) << endl;
}
}
private:
long double factor = 1;
long double prime = 600851475143;
long double i = 0;
int x = 0;
long double factorarray[9];
};
int main() {
Project3 Pro3;
Pro3.factorcalc();
Pro3.displayfactorresults();
return 0;
}
このコードは、projecteuler.net の Project 3 に対応しています。C ++の基本的な知識と常識を使用して、600851475143の最大の素因数を見つけようとしています。
関数でエラーが発生していvoid displayfactorresults
ます。
コンパイラは次のエラー メッセージを出力します。
「バイナリ式 'long-double' & 'long-double' のオペランドが無効です」