.编程找出1000之内的所有完数。所谓完数是指一个数与其除本身以外所有因子之和相等。例如6除本身以外的因子有1、2、3,而6=1+2+3,所以6是一个完数。
#include <stdio.h>
int main(){
int num=0;
int f[999];
int n;
// scanf("%d",&n);
for (int i = 2; i <= 1000; ++i) {
int index = 0;
int temp = 0;
for (int j = 1; j <= i/2; ++j) {
if(i%j==0){
f[index] = j;
temp += j;
num++;
index++;
}
}
if(temp == i){
printf("%d its factors are ",i);
for (int j = 0; j < num; ++j) {
printf("%d ",f[j]);
}
printf("\n");
}
num = 0;
}
return 0;
}
#include<stdio.h>
void main() {
int m,s,i;
for(m=2; m<1000; m++) {
s=0;
for(i=1; i<m; i++)
if((m%i)==0)
s=s+i;
if(s==m) {
printf("%d",m);
printf("\n");
}
}
}
bool checkPerfectNumber(int num){
if (num == 1) {
return false;
}
int sum = 1;
for (int d = 2; d * d <= num; ++d) {
if (num % d == 0) {
sum += d;
if (d * d < num) {
sum += num / d;
}
}
}
return sum == num;
}
//https://leetcode.cn/problems/perfect-number/solution/wan-mei-shu-by-leetcode-solution-d5pw/
#include
int main()
{
int n=1000;
int r,j,i;
for(i=1;i<=n; i++){
r = 0;
for(j=1;j<i;j++){
if(i%j == 0){
r = r + j;
}
}
if(r == i){
printf("the result is:%d\n",r);
}
}
return 0;
}
#include<stdio.h>
#include<iostream>
#define MAX 1000
void main()
{
int i, j, k;
printf("1000以内的完数如下:\n");
for (i = 2; i < MAX; i++)
{
j = 0;
for (k = 1; k < i; k++)
if ((i % k) == 0)
j = j + k;
if (j == i)
printf("%d \n", i);
}
system("pause");
}
#include <stdio.h>
int isPerfectNumber(int num) {
if (num == 1)
return 0;
int sum = 1;
for (int d = 2; d * d <= num; ++d) {
if (num % d == 0) {
sum += d;
if (d * d < num)
sum += num / d;
}
}
return sum == num;
}
int main() {
for (int i = 1; i < 1000; i++) {
if (isPerfectNumber(i))
printf("%d ", i);
}
return 0;
}
#include "stdio.h"
int main()
{
int i,j,n,s;
n=1000;
for(i=2;i<=n;i++){
s=0;
for(j=1;j<i;j++)
if(i%j==0)
s+=j;
if(s==i)
printf("%d\n",i);}
return 0;
}
之前写的有一篇完数的文章,里面也讲解到了思路,题主可做参考:
//编程:Code_流苏
#include<stdio.h>
int main()
{
int i, j, s, n;
printf("请输入所选范围上限:");
scanf("%d", &n);
printf("%d范围内的完数有:\n",n);
for( i=2; i<=n; i++ )//变量i控制选定数范围
{
s=0; //保证每次循环s的初值为0//s记录累加因子之和
for( j=1; j<i; j++ )//变量j控制除数范围
{
if(i%j == 0) //判断j是否为i的因子
s += j;
}
if(s == i) //判断因子这和是否和原数相等
printf("%d ", i);
}
return 0;
}
如有帮助,还望采纳!
#include <stdio.h>
int main()
{
int a, i, sum = 0;
scanf("%d", &a);
for(i = 1; i<a; i++)
{
if(a%i == 0)
{
sum += i;
}
}
if(sum == a) printf("true");
else printf("false");
return 0;
}