scanf("%d",&q)
for(i=1i<=qi++)
{if(q%i==0)
sum=sum+i}
printf("%d",sum)
如想输出该数所以的约数和所有约数的和,程序如下:
scanf("%d",&q)
for(i=1i<=qi++)
{
if(q%i==0)
{
sum=sum+i
printf("%d",i)
}
}
printf("\n")
printf("%d",sum)
已经AC,
代码:
#include<stdio.h>#include<stdlib.h>
int CountDivisorsSum(int num)
{
int i = 0
int DivisorsSum = num
for(i = 1 i <= num / 2 i++)
{
if(num % i == 0)
{
DivisorsSum += i
}
}
return DivisorsSum
}
int main(void)
{
int num = 0
scanf("%d", &num)
printf("%d", CountDivisorsSum(num))
return 0
}
1和自然数本身都是自然数的约数,但是如果该自然数是1,输出也因为为1,在程序中,直接把约数的和初始化为自然数int DivisorsSum = num如果自然数是1,是不会执行下面的for循环的,for循环只需要从1到num/2就够了,因为一个自然数的最大约数一定小于或等于num/2。望采纳!
具体 *** 作步骤如下:
一、新建一个C语言源程序,使用Visual C++6.0的软件。
二、从键盘中输入两个正整数a和b。代码:printf("please input two number:\n");int a,b;scanf("%d%d",&a,&b)。
三、取两个数a,b中的较小值存放到变量n中。代码:int n=a;if (n>b)n=b。
四、从两个数a和b中的较小数开始逐个减小1,寻找能整除a和b的整数。第一个找到的整数即整数a和b的最大公约数。
五、点击工具栏的如图图标,对源程序编译运行。
六、测试输入4,6,得到最大公约数2。程序是正确的,以测试更多的数。
七、
上面面步骤是编程的思路,给出完整代码,方便复制使用。#include<stdio.h>void main(){printf("please input two number:\n")int a,b;scanf("%d%d",&a,&b);//从键盘输入两个数 int n=a;f (n>b) n=b;//取两个数中的较小数 for(int i=ni>=1i--) { if (a%i==0&&b%i==0) { printf("最大公约数:%d \n",i)break}}}。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)