📅  最后修改于: 2023-12-03 14:40:26.335000             🧑  作者: Mango
本题是C语言基础题目,要求求出某一个整数的所有因子。
请你编写一个C语言函数,该函数接受一个正整数作为参数,返回该正整数的所有因子。因子是指能够整除该正整数的正整数。
int *factors(int number, int *factors_size);
number
:正整数,表示要求因子的数值。factors_size
:用于返回因子个数。number
的所有因数数组(返回值为整型数组指针)。*factors_size
参数返回。malloc
(或相应的内存分配函数)分配。number
为零,返回的数组指针应该为NULL
,并且因子个数应该为0
。#include <stdio.h>
#include <stdlib.h>
int *factors(int number, int *factors_size);
int main()
{
int n, size, i;
scanf("%d", &n);
int *factor_list = factors(n, &size);
if (factor_list == NULL)
{
printf("Factor list is NULL!\n");
return 0;
}
printf("Total items of factor list is %d:\n", size);
for (i = 0; i < size; i++)
{
printf("%d ", *(factor_list + i));
}
printf("\n");
free(factor_list);
return 0;
}
int *factors(int number, int *factors_size)
{
if (number == 0)
{
*factors_size = 0;
return NULL;
}
int *factor_list = (int *)malloc(sizeof(int) * number);
int i, count = 0;
for (i = 1; i <= number; i++)
{
if (number % i == 0)
{
*(factor_list + count) = i;
count++;
}
}
*factors_size = count;
return factor_list;
}
本题需要求出某一个整数的所有因子,因子是指能够整除该正整数的正整数。此题可以通过枚举法来解决,对于一个正整数,依次枚举所有的可能的因子,如果该因子能够被整除,则该因子是这个数的一个因子。
本题需要注意的是:返回的数组必须使用malloc
(或相应的内存分配函数)分配,如果输入的数为零,则返回的数组指针应该为NULL
,并且因子个数应该为0
。
本题代码主要包括了以下几个部分:
main
函数:主函数,负责接受输入参数和打印输出结果。factors
函数:求出给定整数的因子的函数。number
:给定的正整数。*factors_size
:因子个数,通过指针返回。输入:
12
输出:
Total items of factor list is 6:
1 2 3 4 6 12