问题是要解决这个问题。
13195的主要因子是5、7、13和29。 600851475143中最大的素数是多少?
我写了这段代码
#include <iostream>
#include <math.h>
using namespace std;
bool prime(long int a);
int main()
{
long int b = 600851475143/2;
long int k;
for(long int i = 1; i <= b ; i++)
{
if(b % i == 0 && prime(i) == true)
{
k = i;
}
}
cout << k << endl;
return 0;
}
bool prime(long int a)
{
bool p = true;
for(long int i = 2; i <= sqrt(a) && p == true ; i++)
if(a % i == 0) p = false;
return p;
}
在构建后执行时,它会打开一个控制台,什么也没显示
答案 0 :(得分:0)
在main的for循环内添加一个cout语句。您的程序正在运行,只需要很长时间。
答案 1 :(得分:0)
代码很好。 600851475143/2只是一个很大的数字,因此您必须等待几分钟,直到结果打印出来。 此外,如果要进行一次素数测试,则需要进行两次测试,从而不必要地提高了复杂性。 试试这个:
long int b = 600851475143/2;
long int k = b;
for(long int i = 2; i < b ; i++)
{
if(b % i == 0)
{
k = i;
break;
}
}
cout << k << endl;