请问我写的代码编译出来是浮点错误,要怎么改正

任务描述
编程输入一个不小于6的正整数N(N<99999999),输出它是不是完全数。真约数之和恰好等于它本身的数是完全数。

输入样例:
28
输出样例:
YES
输入样例:
100
输出样例:
NO


#include
main()
{
    int i,n,sum=0;
    int a[99999999];
    scanf("%d",&n);
    for(i=0;iif(n%i==0){
            a[i]=i;
            sum+=a[i];
        }
    }
    if(n==sum){
        printf("YES");
        }else{
            printf("NO");
        }
    return 0;
 } 

i不能从0开始,从1开始


#include<stdio.h>
main()
{
    int i,n,sum=0;
    int a[99999999];
    scanf("%d",&n);
    for(i=1;i<n;i++){
        if(n%i==0){
            a[i]=i;
            sum+=a[i];
        }
    }
    if(n==sum){
        printf("YES");
        }else{
            printf("NO");
        }
    return 0;
 }