#4829: 為什麼會錯...


cse911511 (儒,)

學校 : 國立臺中高級工業職業學校
編號 : 16056
來源 : [114.38.2.203]
最後登入時間 :
2011-08-11 21:16:55
d010. 盈數、虧數和完全數 -- Sagit's C++ 程式設計 | From: [111.70.198.197] | 發表日期 : 2011-01-31 17:50

#include <iostream>
using namespace std;
int main()
{
    long n,n2,a,b,S=0;

    while( cin >> n)
    {
        if(n==1) break;
        for(int i=1;i<=n;i++)
        {
            if(n%i==0)
            {
                a=i;
                b=n/i;
                if(a>b)break;
                S=S+a+b;
            }
            if(a==b) break;
        }
        S=S-n;
        if(S>n) cout << "盈數" << endl;
        else if(S==n) cout << "完全數" << endl;
        else if(S<n) cout << "虧數" << endl;
        S=0;
    }
    return 0;
}

 
#4840: Re:為什麼會錯...


senline39518comi (喵一聲,喵~)

學校 : 國立雲林科技大學
編號 : 11691
來源 : [61.221.166.143]
最後登入時間 :
2021-10-06 11:20:51
d010. 盈數、虧數和完全數 -- Sagit's C++ 程式設計 | From: [220.141.168.188] | 發表日期 : 2011-02-01 15:27

#include
using namespace std;
int main()
{
    long n,n2,a,b,S=0;

    while( cin >> n)

    {
        if(n==1) break;
        for(int i=1;i<=n;i++)
        {
            if(n%i==0)
            {
                a=i;
                b=n/i;
                if(a>b)break;
                S=S+a+b;
            }
            if(a==b) break;
        }
        S=S-n;
        if(S>n) cout << "盈數" << endl;
        else if(S==n) cout << "完全數" << endl;
        else if(S        S=0;
    }
    return 0;
}


你的程式在算因數的時候如果剛好是次方數的話平方數就會多加一次

例如: 4 9 16 25 .....

前面這些因為剛好都不會超過本身但 

256除了自己本身所有因數和=255

如果多加一個平方數16就會錯誤了。 

 
ZeroJudge Forum