n的因数,设为x,可得n=kx,k为常数,明显,k也为n的因数。所以求n的因数,可以求枚举1到n^0.5的所有数,判断这个数是否能被n除尽,那么n/x必然也为n的因数,且除了x^2=n的特殊情况,其他的x和n/x都不相等。为了看起来舒服,可以排序一下。
c语言代码
#include
#include
#include
int cmp (const void *aa,const void *bb) //比较函数
{
return *(int *)aa-*(int *)bb;
}
int main()
{
int x,n,i,top=0;
int num[10000];
scanf ("%d",&n);
for (x=1;x<=sqrt(n);++x)
{
if (n%x==0) {num[top++]=x;if (x!=(n/x))num[top++]=n/x;}
}
qsort(num,top,sizeof(num[0]),cmp);
for (i=0;i
printf ("\n");
return 0;
}
这个算法并不高效果,不过算10亿以内的整数n,肯定能不到1秒出解的
你好:
第一步:给定一个正整数n
第二步:依次以(2~n-1)的整数d为除数去除n,检查余数是否为0.
若是,则d是n的因数;若不是,则d不是n的因数
第三步:在n的因数中加入1和n
第四步:输出n的所有因数
人才啊,你说的算法是计算机程序上的算法?我只能给出C语言是怎么写的,方法就是让这个数和1--n之间的所有整数做除法求取余数若余数为0则将其存入一个数组,数组长度为n,采用动态数组麻烦一点,若不是则将除数加1之后继续下一次循环直至循环结束代码从略OVER
打酱油......