要是质数的话 6=1+2+3+5
#include<stdioh>
#include<stdioh>
void main()
{
int n,m=1,i,j;
scanf("%d",&n);
for(i=1;i<n;i++)
{
for(j=1;i%j;i++);
if(i==j)
m+=i;
}
if(m==n)
printf("为“完全数”\n");
else
printf("不为“完全数”\n");
}
integer a,i,k,sum
read(,)a
k=int(a/2+01)
sum=0
do 10 i=1,k
if (mod(a,i)eq0) sum=sum+i
10 continue
if (sumeqa) then
write(,)'yes'
else
write(,)'no'
endif
pause
end
写个比较笨的方法:
int perfect(int number)
{
int i, sum = 0;
for(i = 1; i < number; i++)
{
if(number%i == 0)
{
sum = sum + i;
}
if(sum > number)
{
return 0;
}
}
if(sum == number)
{
return 1;
}
return 0;
}
这是一个C#算法可能对你有帮助
看看吧!
public static int[] wanShu(int num)
{
List<int> listInt = new List<int>();//存储因子的泛型数组
List<int> listReturn = new List<int>();//存储最后的结果的泛型数组
for (int i = 3; i < num; i++)
{
for (int j = 1; j < i; j++)//被除数即因子只可能在1到num-1里面
{
if (i % j == 0)//查找所有因子
{
listIntAdd(j);//将因子添加到数组
}
}
if (listIntSum() == i)//判断因子和是否等于本数值(即完数的定义)
{
listReturnAdd(i);//如果是的话就记录下来
}
listIntClear();
}
return listReturnToArray();//返回所有完数数组
}
我的思路是这样的:
for(每一个数i)
{
for(从1到i的倒数第一个数)
{
记录下每个因子;
}
然后将所有因子相加与i数比较
}
哈哈。。
完全数(Perfect number),又称完美数或完备数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。
#include "stdioh"int main()
{
int sum,k,j;
sum=0;
for(k=2;k<=100;k++)//从2开始判断该数是否是完数
{
sum=0;
for(j=1;j<k;j++)//计算所有真因子的和
if(k%j==0)
sum=sum+j;
if(sum==k)//如果该数恰好等于它的所有真因子的和,输出该完数
printf("%d ",k);
}
return 0;
}
/
6
6 = 1 + 2 + 3
28
28 = 1 + 2 + 4 + 7 + 14
1024
0
Press any key to continue
/
#include <stdioh>#include <stdlibh>
int main() {
int i,j,n,num,sum,a[16];
while(scanf("%d",&num) == 1 && num > 0) {
j = 0;
sum = 0;
for(n = 1; n <= num / 2; ++n) {
if(num % n == 0) {
sum += n;
a[j++] = n;
}
}
if(sum == num) {
printf("%d = ",num);
for(i = 0; i < j; ++i) {
if(i == j - 1) printf("%d",a[i]);
else printf("%d + ",a[i]);
}
printf("\n");
}
}
return 0;
}
以上就是关于使用c语言编写一个程序,判断从键盘输入的整数是否为“完全数”全部的内容,包括:使用c语言编写一个程序,判断从键盘输入的整数是否为“完全数”、fortran90编程中判断一个正整数是否为完数的程序,若是输出yes,否则输出no、判断一个数是否为完数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)