這應該找到一個數的最大素因子..但它不工作.. 答案應該是6857,但它返回688543 ..C++:編程來查找數字的最大素數因子,我的代碼中出了什麼問題?
int isPrime(unsigned long int n)
{
for(unsigned long int i=2;i*i<(n);i++)
{
if(n%i==0)
{
return 0;
break;
}
}
return 1;
}
int main()
{
unsigned long int num=600851475143;
unsigned long int max=2, i=2;
while(num!=1)
{
if(num%i==0 && isPrime(i))
{
max=i;
num/=i;
i--;
}
i++;
}
cout<<max;
return 0;
}
感謝提前:)
哪個編譯器和操作系統?在很多平臺上,「600851475143」對於「長」來說可能太大。 – Angew
VS2012對此發出警告:警告C4305:'初始化':從'__int64'截斷爲'unsigned long' – doctorlove
編譯代碼時是否收到警告? – doctorlove