Imはthisプログラミング上の問題を解決しようとしています。 ここに質問があります。 13195のプライム要因プログラム(C++)の失敗
は今、私はここで、プログラム素因数5、7、13および29
番号600851475143の最大素因数は何ですか?その5.で立ち往生実行しながら
#include <iostream>
#include <math.h>
using namespace std;
const long long no = 600851475143;
long long isprime(long long p)
{
long long reply = -1;
long long i = 2;
while (i < pow(p, 0.5)) {
if (i % p == 0)
reply = i;
}
if (reply == -1){
return 0;
cout<<" yup its prime "<<endl;
}
else
return reply;
}
long long factor(long long x)
{
for (long long i = 2; i < no; i++) {
cout<<"Trying "<<i<<endl;
if ((isprime(i) == 0)&& (no % i == 0)) {
return i;
cout<<"found "<<i<<endl;
break;
}
}
}
int main()
{
long long ans = no;
while (ans != 1) {
cout << factor(ans) << endl;
ans = ans/factor(ans);
}
}
である、しかし、力ずくでそれを確認しようとするC++プログラムを、でっち上げてきたし、これが出力されます
~/Desktop/proj$ ./a.out
Trying 2
Trying 3
Trying 4
Trying 5
私は本当になぜ番号5で立ち往生しているのか理解できません。
編集:ありがとうb13rg、私は間違いを認識した。私は今、より良いアルゴリズムを持っている、私はそれを必要とする誰のためにそれを貼り付けている。
#include<iostream>
#include<math.h>
using namespace std;
long long fun (long long x)
{
for(long long i=2; i<sqrt(x);i++){
while (x%i==0){
cout<<i<<endl;
x=x/i;
}
}
}
int main(){
fun(600851475143);
return 0;}
これらの問題を解決するには、デバッガを使用する方法を学んでください。閉鎖の質問に印を付ける。 – Mahesh