#include #include long int bestdiv (long int n) { if (n==1) { return 1; } else if (n==2) { return 3; } _Bool flag=0; short i=0, j; long int sum=1, a[12][2]={0}, N=n, m=2, fac=1; while (n!=1) { if (n%m==0) { a[i][0]=m; while (n%m==0) { n/=m; a[i][1]++; } i++; } m++; if (m>N/2 && n!=1) { flag=1; break; } } /*for (i=0; i<12; i++) { printf("%ld ", a[i][0]); } printf("\n"); for (i=0; i<12; i++) { printf("%ld ", a[i][1]); } printf("\n");*/ if (flag==1) { return sum+n; } for (j=i-1; j>=0; j--) { while (a[j][1]!=0) { fac*=a[j][0]; sum=sum+fac; a[j][1]--; } } return sum; } long int longestSequence(int a_size, long int* a) { int i; long int sum=0; for (i=0; i