#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以内的完数都输出了。