C语言:输入一个整数,将其所以因子保存到一个数组并输出
时间: 2023-06-12 13:04:09 浏览: 136
你可以尝试以下代码实现:
```c
#include <stdio.h>
int main() {
int num, i, j = 0;
int factors[100]; // 假定因子不超过 100 个
printf("请输入一个整数:");
scanf("%d", &num);
// 查找因子并存入数组
for (i = 1; i <= num; i++) {
if (num % i == 0) {
factors[j] = i;
j++;
}
}
// 输出因子数组
printf("%d 的因子有:\n", num);
for (i = 0; i < j; i++) {
printf("%d ", factors[i]);
}
return 0;
}
```
该程序首先提示用户输入一个整数,然后查找该整数的所有因子,并将它们存储在一个数组中。最后,程序输出这个数组中的元素,即该整数的所有因子。
相关问题
输入一组整数,将其中的质数存入数组中,并输出这个数组。 题目9:输入一组整数,将其中的完数存入数组中,并输出这个数组。(完数是指一个数恰好等于它的因子之和,如6=1+2+3) 题目10:输入一组整数,将其中的回文数存入数组中,并输出这个数组。(回文数是指正反读都一样的数,如121)这些用C语言怎么写,代码
如下所示:
题目9:完数
```c
#include<stdio.h>
#define N 100
int main() {
int arr[N],n,i,j,sum;
printf("请输入数组长度n(n<=100):");
scanf("%d",&n);
printf("请输入%d个整数:",n);
for(i=0; i<n; i++)
scanf("%d",&arr[i]);
for(i=0; i<n; i++) {
sum=0;
for(j=1; j<arr[i]; j++) //累加因子和
if(arr[i]%j==0)
sum+=j;
if(sum==arr[i]) //判断是否为完数
printf("%d ",arr[i]);
}
return 0;
}
```
题目10:回文数
```c
#include<stdio.h>
#define N 100
int main() {
int arr[N],n,i,j,temp,flag;
printf("请输入数组长度n(n<=100):");
scanf("%d",&n);
printf("请输入%d个整数:",n);
for(i=0; i<n; i++)
scanf("%d",&arr[i]);
for(i=0; i<n; i++) {
temp=arr[i];
flag=1; //flag表示是否为回文数,初值为真
while(temp>0) { //判断是否为回文数
if(temp%10!=arr[i]%10) {
flag=0; //不是回文数,flag变为假
break;
}
temp=temp/10;
arr[i]=arr[i]/10;
}
if(flag==1)
printf("%d ",arr[i]);
}
return 0;
}
```
用循环找出整数n的所有因子,将因子保存在数组中并且相加,如果因子之和等于整数n,那么n就是完数,输出保存在数组中的因子。 测试输入: 1000 预期输出: 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 用C语言完成
你可以使用C语言编写如下的函数来完成这个任务:
```c
#include <stdio.h>
void findFactorSum(int n, int factors[], int sum) {
for (int i = 1; i <= sqrt(n); ++i) {
if (n % i == 0) {
// 如果当前数是因子,添加到数组并更新总和
factors[sum] = i;
sum++;
// 如果i不是n的完全平方根,则还需要另一个因子 n/i
if (i != n / i) {
factors[sum] = n / i;
sum++;
}
}
}
// 检查总和是否等于n,如果是,打印因子
if (sum > 0 && factors[sum - 1] + factors[sum - 2] == n) {
printf("%d=", factors[0]);
for (int j = 1; j < sum; j++) {
printf("%d+", factors[j]);
}
printf("\n");
} else {
printf("No perfect number found.\n");
}
}
int main() {
int n = 1000;
int factors[n];
findFactorSum(n, factors, 0);
return 0;
}
```
在这个代码中,我们遍历从1到`sqrt(n)`的数,检查它们是否能整除n。如果可以,我们将它们作为因子添加到`factors`数组,并计算总和。同时,由于因子对总是成对出现(除了1和本身),我们会检查当前因子和它的配对因子之和是否等于n。如果找到,就按照给定格式输出。
注意,实际运行时需要处理数组大小足够存储所有因子的情况,这里假设n的因子不会超过数组长度。此外,`findFactorSum`函数的参数`sum`用于记录已找到的因子个数和它们的位置。
阅读全文