首页 > 试题广场 >

约数的个数

[编程题]约数的个数
  • 热度指数:70531 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入n个整数,依次输出每个数的约数的个数

输入描述:
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)


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

输入

5
1 3 4 6 12

输出

1
2
3
4
6
#include<stdio.h>
#include<malloc.h>
int Find_yueshu(int a){
	int sum=0;
	int i;
	for(i=1;i*i<a;i++)//最小公约数(max)时,自己乘自己
		if(a%i==0)
			sum+=2;
	if(i*i==a)sum++;
	return sum;
}

int main(){
	int n;
	scanf("%d",&n);
	int *num=(int *)malloc(sizeof(int)*n);
	for(int i=0;i<n;i++){
		int temp;
		scanf("%d",&temp);
		num[i]=temp;
	}
	for(int j=0;j<n;j++){
		printf("%d",Find_yueshu(num[j]));
		printf("\n");
	}
}

发表于 2023-12-18 16:00:28 回复(0)
#include <stdio.h>
void number(int n) {
    int number = 0,i;  //约数个数
    for (i = 1; i * i < n; ++i ) {          //查找约数,i*i防止超时
        if (n % i == 0) {
            number += 2;
        }
    }
    if(i*i==n)
        number += 1;
    printf("%d\n", number);
}
int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        int num[n];
        for (int i = 0; i < n; ++i) {
            scanf("%d", &num[i]);
        }
        for (int i = 0; i < n; ++i) {
            number(num[i]);
        }
    }
    return 0;
}
发表于 2023-04-23 22:39:00 回复(0)
#include<stdio.h>
#include<math.h>

int prime(long long int res){
    int cnt=0;
    int i;
    int lim=sqrt(res);
    for(i=1;i<=lim;++i){
        if(res%i==0){
            cnt+=2;
        }    
    }
    return cnt-(lim*lim==res);
}

int main(int argc,const char* argv[]){
    int n;
    scanf("%d",&n);
    while(n--){
        long long int res;
        scanf("%lld",&res);
        printf("%d\n",prime(res));
    }
    return 0;
}
发表于 2022-06-17 21:32:08 回复(0)
#include<stdio.h>
#include<stdlib.h>
int Find_yueshu(int a){
	int sum=0;
	int i;
	for(i=1;i*i<a;i++)
		if(a%i==0)
			sum+=2;
	if(i*i==a)sum++;
	return sum;
}

int main(){
	int n;
	scanf("%d",&n);
	int *num=(int *)malloc(sizeof(int)*n);
	for(int i=0;i<n;i++){
		int temp;
		scanf("%d",&temp);
		num[i]=temp;
	}
	for(int j=0;j<n;j++){
		printf("%d",Find_yueshu(num[j]));
		printf("\n");
	}
}

发表于 2022-01-19 14:06:14 回复(0)