输出描述:

可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。

示例1

输入

复制

5
1 3 4 6 12

输出

复制

1
2
3
4
6

牛客网 C语言 约数的个数(约数包含1和本身)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
long  maxn = 0;
int prime[40001];
int size = 0;
void Initial(){
    maxn = sqrt(10) * 10000 + 1;
    int isprime[maxn];
    for(int i = 0 ;i < maxn ; i++){
        isprime[i] = 1;
    }
    isprime[0] = isprime[1] = 0;
    for(int i = 2 ; i < maxn ; i++){
        if(isprime[i]==0) 
            continue;
        prime[size ++] = i;
        for(int j=i*i;j<maxn;j=j+i){
            isprime[j] = 0;
        }
    }
}
int main(){
    Initial();
    int n;
    while(scanf("%d" ,&n) != EOF){
        int number;
        for(int i = 0 ; i < n ; i++){
            scanf("%d" , &number);
            int answer = 1 ;
            int factor = number;
            for(int j = 0 ; prime[j]*prime[j] <= factor;j++){
                int k = 1;
                while(factor % prime[j] == 0 ){
                    k++;
                    factor /= prime[j];
                }
               answer *= k;
            }
            if(factor != 1){
                answer *= 2;
            }
            printf("%d\n" , answer);
        }
   
    }
   
    return 0;
}

相关文章:

  • 2022-02-04
  • 2022-12-23
  • 2021-09-27
  • 2021-11-26
  • 2022-12-23
  • 2021-04-04
  • 2022-01-28
猜你喜欢
  • 2022-12-23
  • 2021-09-22
  • 2021-06-11
  • 2021-05-26
  • 2021-07-10
  • 2022-02-26
  • 2021-12-01
相关资源
相似解决方案