c - 显示完美数字及其加法器
问题描述
我需要程序帮助才能在标准输出中显示前 4 个完美数字以及函数完美(int,int*)。这个函数的参数是自然数和你需要写加法器的地址(我想是完美的数字)。如果数字是完美的,函数必须返回 1,否则返回 0。这是我到目前为止所做的。请帮忙。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int perfect(int,int*);
int main()
{
int *arr,a;
int i,j;
perfect(a,arr);
}
int perfect(int n,int *arr)
{
int lim=8128,i,sum;
for(n=1;n<=lim;n++)
{
sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
{
sum=sum+i;
}
}
if(n==sum)
printf("%d ",n);
}
}
解决方案
我认为这段代码对你有帮助。完美函数完美时返回1,否则返回0。divisor
用于收集地址的全局数组。当perfect
函数返回 1 时,我打印除数数组并启动deivisor_count =0
. 请看一看:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int divisor[1000], deivisor_count = 0;
int perfect(int n)
{
int sum=0, i, j = 0;
for(i=1;i<n;i++)
{
if(n%i==0)
{
sum=sum+i;
divisor[deivisor_count]= i;
deivisor_count = deivisor_count + 1;
}
}
if(n==sum){
return 1;
}
return 0;
}
int main()
{
int i, j =0, is_perfact, n=100000, k;
for (i =2 ; i<=n; i++){
deivisor_count = 0;
is_perfact = perfect(i);
if(is_perfact == 1){
j = j + 1;
for(k = 0; k <deivisor_count; k++){
printf("%d", divisor[k]);
if (deivisor_count -1 == k){
printf("=");
}
else{
printf("+");
}
}
printf("%d\n", i);
}
if (j==4){
break;
}
}
return 0;
}
推荐阅读
- python - python异步和httpx
- python-3.x - matplotlib python 3中的条形图错误
- c# - Cefsharp 关机不正确
- wordpress - Wordpress:当用户注册时发送通知,但仅适用于具有订阅者角色的用户
- python - 使用 Open-cv 和 Raspberry Pi3B+ 从远到近实时跟踪对象
- dart - 如何使用 mongo_dart 比较两个嵌套文档
- wix - 在 WiX 中创建一个以 LogonUser 作为名称的目录
- c++ - 如何让 C++ 暂停以等待 for 循环中的用户输入
- react-native - React Native:onChangeText 如何处理两个事件?
- google-cloud-platform - 如何在google云平台做RNA seq分析?