jai*_*raj 19 c algorithm performance numbers factors
我想找到一个数字的所有精确除数.目前我有这个:
{
int n;
int i=2;
scanf("%d",&n);
while(i<=n/2)
{
if(n%i==0)
printf("%d,",i);
i++;
}
getch();
}
Run Code Online (Sandbox Code Playgroud)
有没有办法改善它?
Rnd*_*ndm 55
首先,您的代码应该具有条件i <= n/2,否则它可能会错过其中一个因素,例如,如果n = 12,则不会打印6.
运行回路的数量的平方根(即,i <= sqrt(n))和打印都i和n/i(均为n个将倍数).
{
int n;
int i=2;
scanf("%d",&n);
while(i <= sqrt(n))
{
if(n%i==0) {
printf("%d,",i);
if (i != (n / i)) {
printf("%d,",n/i);
}
}
i++;
}
getch();
}
Run Code Online (Sandbox Code Playgroud)
注意 :
i*i == n如@chepner所建议的那样.| 归档时间: |
|
| 查看次数: |
50821 次 |
| 最近记录: |