簡體   English   中英

為什么某些用戶定義的 C++ 函數不適用於大數字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM