c语言完数输出因子
1. c语言编程:找出200以内所有完数,并输出其因子 例如输出6=1+2+3
#include <stdio.h>
int Perfect(int);
void PerfectShow(int,int);
void main()
{
int num=200;
int judge=0,i;
for(i=0;i<=200;i++)
{
judge=Perfect(i);
if(judge>1)
{
PerfectShow(i,judge);
printf("\n");
}
}
getch();
}
int Perfect(int num)
{
int max,sum=0;
int i;
for(i=1;i<num;i++)
{
if(num%i==0)
{
max=i;
sum=sum+i;
}
if(sum==num)
{
return max;
}
else
{
}
}
return 1;
}
void PerfectShow(int num,int max)
{
int out,i;
printf("%d = ",num);
for(i=1;i<num;i++)
{
if(num%i==0)
{
printf("%d",i);
if(i==max)
{
return;
}
else
printf("+");
}
}
}
2. c语言输出一个数的所有因数
从数学定义可以得知,一个数的因数范围在1到该数本身。所以只需要从1到该数遍历,逐个尝试模除,可以整除的则为因数,将所有符合条件的数打印即可。
代码如下:
#include<stdio.h>
intmain()
{
intn,i;
scanf("%d",&n);//输入要输出因数的值。
for(i=1;i<=n;i++)
{
if(n%i==0)printf("%d,",i);//输出因数。
}
return0;
}
3. 如何用 C语言 输出一个整数的因子
假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。 需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立。反过来说,我们称n为m的倍数 。
如果利用C语言求一个整数n的因子,可以从1开始到n,依次加1,如果它是n的的因子,则输出。
具体的源码实现如下:
#include<stdio.h>
#include<stdlib.h>
intmain(intargc,char*argv[])
{
intn;
while(scanf("%d",&n)!=EOF)
{
if(n<1)break;
inti;
for(i=1;i<=n;i++)
{
if(n%i==0)
printf("%d",i);
}
printf(" ");
}
return0;
}
编译运行后的结果:
4. c语言:列出完数及其因子
#include <stdio.h>
#include <conio.h>
void main()
{
int m,i,s;
for(m=1;m<=1000;m++) //从1开始到1000循环结束
{
s=0;//初始化因子之和s为0
for(i=1;i<m;i++) //寻找在1到m之间,有多少m的因子
if(m%i==0) //如果m能整除i,则i为m的因子
s=s+i;//将因子累加
if(s==m) //如果因子之和等于这个数
printf("%d\t",s);//输出
}
getch();
}
运行结果:
6 28 496
请参考
5. 用c语言求1000之内的完数 要求输出完数的因子
#include "stdio.h"
//判断n是否是完数
bool isWanShu(int n)
{
int sum=0, j;
for(j=1;j<n;j++)
{
if(0==n%j) sum+=j;
}
if(sum==n) {
printf("%d 是完数, ", n);
return true;
} else {
return false;
}
}
//输出整数的n的因子(自身除外)
void printFactor(int n)
{
int i;
printf("%d 的因子: ", n);
for(i=1; i<n; i++) {
if(n%i==0) printf("%d ", i);
}
printf("\n");
}
int main()
{
int i;
for(i=1; i<=1000; i++) {
if ( isWanShu(i)) { //如果i是完数,则输出它的因子。
printFactor(i);
}
}
return 0;
}
输出结果:
6 是完数, 6 的因子: 1 2 3
28 是完数, 28 的因子: 1 2 4 7 14
496 是完数, 496 的因子: 1 2 4 8 16 31 62 124 248
6. c语言完数输出因子
#includeintyinzi(intn);intwanshu(intn);intmain(){inti;for(i=1;i
7. 编写一段C语言程序,功能为:找出1000之内的所有完数,并按下面格式输出其因子。
#include <stdio.h>
int main()
{
int i,j,sum;
for(i=2;i<1000;++i)
{
for(j=1,sum=0;j<i;++j)
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
printf("%d: its factors are 1",i);
for(j=2;j<i;++j)
{
if(i%j==0)
{
printf(",%d",j);
}
}
printf(" ");
}
}
return 0;
}
8. 编程找出1000以内的所有完全数,并输出使该数成为完全数的因子。(c语言)
完数是大于等于1、小于自身的所有因子之和与自身相等的数。先求因子之和,再与其比较,相等时再由小到大求各因子依次输出,并在之间用'+'连接起来。举例代码如下:
#include"stdio.h"
intmain(intargc,char*argv[]){
intn,m,i,t;
for(n=6;n<=1000;n+=2){
for(m=1,t=n>>1,i=2;i<=t;i++)//求所有因子之和
if(n%i==0)
m+=i;
if(m==n){//因子和与自身比较是否相等
printf("%4d=1",n);
for(i=2;i<=t;i++)//若相等则再求因子并输出
if(n%i==0)
printf("+%d",i);
printf(" ");
}
}
return0;
}
9. C语言函数输出完数和因子
这是我编写的 你编写的 要注意 每次进行外循环都要把 s初始化为 0 否则就是用上一次的值
#include <stdio.h>
int main()
{
int i,j,n,sum;
printf("请输入一个数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
if(i%j==0)
sum+=j;
if(sum==i)
{
printf("完数为:%d\t它的约数是:",i);
for(j=1;j<i;j++)
if(i%j==0)
printf("%4d",j);
printf("\n");
}
}
return 0;
}