c语言中求完全数

Python019

c语言中求完全数,第1张

#include <stdio.h>

#include <math.h>

int main()

{

int a,i

for(a=1a<=1000a++){

int A[100]={0},j

j=0

for(i=1i<ai++){ //i<sqrt(a) ——》并不是判定质数,需要找出除本身外所有因数

if(a%i==0){ //a/i==0 ——》/是求商,%才是取余

A[j]=i //A[j]=a ——》A[j]应存储的是a的因数,而不是它本身

j++

}

}

int n,b

n=j

b=a

for(j=j-1j>=0j--){

b=b-A[j]

}

if(b==0){

printf("%d=",a)

for(j=0j<n-1j++){

printf("%d+",A[j])

}

printf("%d\n",A[j])

}

}

return 0

}

两种方法:使用gcc或clang -std=c99 编译

#include <stdio.h>

#include <string.h>

#define MAX  10

void method1(unsigned number)

void method2(unsigned number)

int main(int argc, char *argv[])

{

    unsigned number

    scanf("%u", &number)

    method1(number)

    method2(number)

    return 0

}

void method1(unsigned number){

    char buffer[MAX]

    int n = sprintf(buffer, "%u", number)

    for(int i = 0 i <= n ++i)

        printf("%c ", buffer[i])

    printf("\n")

}

void method2(unsigned number){

    int digits[MAX] = {[0 ... MAX-1]=-1}

    for(int i = 9 i >= 0 && number > 0 --i){

        digits[i] = number % 10

        number = number / 10

    }

    for(int i = 0 i < MAX ++i)

        if(digits[i] != -1)

            printf("%d ", digits[i])

    printf("\n")

}

1、首先打开vs 2017软件,打开一个准备好的工程,新建一个C语言文件,先写入头文件和main函数,里面定义需要的用到的4个变量。

2、然后先定义一个for循环遍历100以内的所有数,利用条件语句进行判断j是不是i的因子,是的话就相加,判断完成后在判断因子是不是和原来的数相等即可,盘点完输出完成判断的数字,如此往复直到判断完100个数为止。

3、最后按Crtl+F10运行程序,可以看到100以内的完数都输出了。