c语言 约数问题

c语言 约数问题,第1张

你是想求该数的约数的和,就是你的程序,但要{}去掉,如下

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}}}。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11236883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存