演習は次のとおりでした。
1 から 1000 までのすべての数のうち、それらの素因数を足し合わせると素数になる (たとえば、12 には 2、2、3 の素因数があり、合計すると 7 になる) プログラムを設計してください。 . そのアルゴリズムのコードを実装します。
を含む C++ の非常に基本的なものを使用することになっていelse/if, while and for loops
ます。もちろん、いくつかの関数を宣言しています。
2、3、5 のような小さなケースに関係なく、まだ正しい出力が得られません。出力は次のとおりです。
6 (sum of factors is 5 : OK)
8 (sum of factors is 6 : WRONG)
10 (sum of factors is 7: OK)
12 (sum of factors is 7: OK)
14 (sum of factors is 9: WRONG)
15 (sum of factors is 8: SO WRONG..)
等..
#include <iostream>
#include <math.h>
using namespace std;
bool CheckPrime (int x)
{
int count=0;
for(int i=1; i<=x; i++)
{
if( x%i==0 )
{count++;}
}
if ( count==2 )
{return true;}
else
{return false;}
}
int MakeSum (int x)
{
int Sum = 0;
for (double i=2; i<sqrt(x); i++)
{
if (CheckPrime(i))
{
for (double j=1; j<1000; j++)
{
int k = pow( i, j);
if ( (x % k) == 0 )
{
Sum = Sum + i;
}
}
}
}
return Sum;
}
int main() // Output cac so tim dc.
{
int SUM = 0;
for (int i=0; i < 1001; i++)
{
SUM = MakeSum(i);
if (CheckPrime(SUM))
{
cout << i << '\n';
SUM = 0;
}
}
}