int n = 36;
for (int i = 1; i <= n/2; i++)
{
if (n % i == 0)
{
Console.WriteLine(i + "\t" + n/i); //效率至上的话最好用 i.ToString + "\t" + (n/i).ToString();
}
}
前面的两个答案,一个多循环了n/2次,另外一个少输出了一半的因数。
你的结果:
1 36
2 18
3 12
4 9
6 6
9 4
12 3
18 2
这个结果是有问题的,提问者要求的答案应该是:
36 18 12 9 6 4 3 2 1
再提供一个参考程序:
static void Main(string[] args)
{
int n = 36;
for (int index = 1; index <= n / 2; index++)
{
if (n % index == 0)
{
Console.Write(n / index + "\t");
}
}
Console.Write(1);
Console.Read();
//36 18 12 9 6 4 3 2 1
}
static void Main(string[] args)
{
int n = 36;
for (int index = n; index > 0; index--)
{
if (n % index == 0)
{
Console.Write(index.ToString() + "\t");
}
}
Console.Read();
}
哈哈 就是这样
static void Main(string[] args)
{
int n = 36;
for (int index = 1; index <= n / 2; index++)
{
if (n % index == 0)
{
Console.Write(index.ToString() + "\t");
}
}
Console.Read();
}
比楼上的时间复杂度要小一点哈