约数的个数
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int num[]=new int[n];
for(int i=0;i<n;i++)
{
num[i]=sc.nextInt();
}
int times[]=new int[n];
//求约数个数
for(int i=0;i<n;i++)
{
for(int j=1;j<=num[i];j++)
{
if(num[i]%j==0)
times[i]++;
}
}
for(int k=0;k<n;k++)
{
System.out.println(times[k]);
}
}
}
第一遍,自己验证过,觉得没问题的写法,结果却……
哭了……不愧是清华的复试机试题。
参考了通过的答案,才终于AC。的确简化了很多,很巧妙呀。不像我,就知道写一大堆循环,从来没想过优化代码效率的问题。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int num[]=new int[n];
for(int i=0;i<n;i++)
{
num[i]=sc.nextInt();
int times=0;
int j;
for(j=1;j<Math.sqrt(num[i]);j++)
{
if(num[i]%j==0)
times=times+2;
}
if(j*j==num[i])
times++;
System.out.println(times);
}
}
}