簡體   English   中英

找出n個數字的公因子數(不包括“ 1”作為公因子)

[英]Find the number of common factors for n numbers excluding “1” as common factor

這是我用gcc編寫的代碼。 不知道我的邏輯是不正確還是我在犯其他錯誤。每次輸出都為0。

int main()
{
int n,a[20],count=0;
cin>>n;

for(int i=0;i<n;i++)
{
    cin>>a[i];
}

for(int k=0;k<n;k++)
{
    int c=0;
    for(int j=2;j<n;j++)
    {
        if(a[k]%j==0)
        {
            c++;
        }
        else
        {
            continue;
        }
    }
    if(c==n)
    {
      count++;
    }
}
cout<<count;
}

根據我的收集,您的方法是不正確的。 你應該采取一切數量從2max(a) [1],並檢查它是否在每一個數字的因子/除數a 如果是,則可以增加count


在偽代碼形式語法中,[1]甚至max(sqrt(a[i]) for a[i] in a)甚至更好。

您以錯誤的順序獲得了循環。 您正在檢查是否有任何數字的n分頻器。

嘗試交換循環。 然后,該計數將是將輸入相除的數字的數量。

您的上限也有誤。 您需要最高的分頻器。

int max_divider = 2;
for (i = 0; i < n; i++) {
    if (a[i] > max_divider) 
    {
        // Naive approach
        max_divider = a[i];
    }
}
// For each number 2..max_divider
for(int j=2;j <= max_divider;j++)
{
    int c=0;
    for(int k=0;k<n;k++)
    {
        if(a[k]%j==0)
        {
            c++;
        }
        else
        {
            continue;
        }
    }
    if(c==n)
    {
      count++;
    }
}

替換此循環

for(int j=2; j<n; j++)

for(int j=2; (j < a[k]); j++)

請注意,您可以擺脫else部分,它沒有任何作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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