题目如下:
输入n个整数,依次输出每个数的约数的个数
注:重点看注释部分,为程序易错点
c++实现:
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int yueshu(int a){
int num=0;
int i=1;
for(i;i<=sqrt(a);i++){ /* 如果不采用此种折中方式则运行时间超时*/
if(a%i==0){
if(i==sqrt(a)){
num++;
}
else
num=num+2;
}
}
return num;
}
int main(){
int num;
int a[1000]={0};
cin>>num;
int i=0;
for(i;i<num;i++){
cin>>a[i];
cout<<yueshu(a[i])<<endl;
}
}
java实现:
import java.io.*;
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner s=new Scanner(System.in);
String sc=s.nextLine();
int num=Integer.valueOf(sc);
String ss=s.nextLine();
String []sss=ss.split(" ");
for(int i=0;i<num;i++){
System.out.println(yueshu(Integer.valueOf(sss[i])));
}
}
static int yueshu(int a){
int num=0;
for(int i=1;i<=Math.sqrt(a);i++){
if(a%i==0){
if(i!=Math.sqrt(a))
num=num+2;
else
num=num+1;
}
}
return num;
}
}