[英]Why is it that some user defined C++ functions won't work with big numbers?
下面是一個例子:
此函數不適用於 900000000 等大數字,但適用於 800 等較小數字
代碼:
#include <vector>
#include <iostream>
#include <string> using namespace std;
long long int largest_prime_factor(long long int num){
vector<long long int >factors;
vector<long long int>primes;
for(long long int i=1;i<=num;i++){
if(num%i==0){
for(long long int a =1;a<=i;a++){
if(i%a==0){
factors.push_back(a);
}
}
if( (factors.size() == 2) && (factors[0] ==1)){
primes.push_back(i);
}
factors.clear();
}
}
reverse(primes.begin(),primes.end());
return primes[0]; }
int main(){
cout<<largest_prime_factor(600851475143)<<endl;
}
嘗試使用以下代碼調用該函數:
cout<<largest_prime_factor(600851475143LL)<<endl;
如果你只是簡單地提到文字 600851475143,它不會被識別為 long long。 您必須通過在末尾附加“LL”來明確告訴編譯器將文字視為長。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.