求N以内的所有完数 C语言 看清楚题再回答!!! 请经过测试以后再回答!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求N以内的所有完数 C语言 看清楚题再回答!!! 请经过测试以后再回答!!!相关的知识,希望对你有一定的参考价值。
Description
如果一个整数其所有因子(包括1但不包括自己)之和等于它自身,那么这个整数就是一个完数。例如,6是完数,因为 6 = 1+2+3。编写一个函数perfect,用于确定参数number是否是一个完数。在程序中使用这个函数,该程序确定并且打印1 ~ N之间所有的完数。
Input
一个数N (N<=1000)
Output
从小到大打印1 ~ N之间所有的完数,每行一个数。
Sample Input
6
Sample Output
1
6
int perfect(int);
int main()
int n;
printf("输入上限N:\n");
scanf("%d",&n);
for (int i=1;i<=n;i++)
if (perfect(i))
printf("%d\n",i);
return 0;
int perfect(int a)
int sum=0;
for (int i=1;i<a;i++)
if (a%i==0)
sum+=i;
if (sum==a)
return 1;
else
return 0;
这个程序可以直接用,但是请你注意,1不是完数,因为定义完数的因数中不能包含自己。最小的完数为6 参考技术A #include <iostream>
using namespace std;
int main()
__int64 a[10001];
int i, j;
int t, m, n, num;
memset(a, 0, sizeof(a));
a[1] = 1;
for (i = 1; i <= 5000; i++)
for (j = 2 * i; j <= 10000; j += i)
a[j] += i;
cin >> t;
while (t--)
cin >> m >> n;
if (m > n)
swap(m, n);
num = 0;
for (i = m; i <= n; i++)
if (a[i] == i)
cout << i << endl;
我以前写的,功能是求num1 - num2间的完数个数。如果需要另外放函数- -提出来一段再调用下即可
重复输入部分可以去掉= =第一个t原本代表的是测试组数- -
用c语言求解 输出1-50以内的所有勾股数
参考技术A #include <stdio.h>void main()
int a,b,c;
for(a=2;a<=48;a++)
for(b=a+1;b<=49;b++)
for(c=b+1;c<=50;c++)
if(a*a+b*b==c*c)
printf("%-4d%-4d%-4d\\n",a,b,c);
参考技术B
# include <stdio.h>
# include <math.h>
#define N 50
int main ()
int a[N],i,j,m,x;
for(m=0,x=1;m<N;m++,x++)
a[m]=x*x;
for(i=1;i<N;i++)
for(j=i+1;j<N;j++)
for(m=0;m<N;m++)
if(i*i+j*j==a[m])
x=sqrt(a[m]);
printf("%d %d %d\\n",i,j,x);break;
return 0;
好不容易用数组做出来,发现早就有人用for做出来了,发出来分享一下吧。
以上是关于求N以内的所有完数 C语言 看清楚题再回答!!! 请经过测试以后再回答!!!的主要内容,如果未能解决你的问题,请参考以下文章