北航计算机机试11孪生数

【问题描述】
孪生数定义: 如果 A 的约数(因数,包含1,但不包含A本身)之和等于 B , B 的约数(因数)之和等于 A , A 和 B 称为孪生数(A和B不相等)。试找出正整数 M 和 N 之间的孪生数。
输入:
从控制台输入两个正整数M和N(1<=M

#include<stdio.h>
#include<time.h>
int main()
{
    int m,n;
    int m_sum;
    int n_sum;
    int isNo=0;
    int i,j;
    clock_t start,end;

    while(scanf("%d%d",&m,&n)!=EOF)
    {
    start=clock();
        for(i=m;i<=n;i++)
        {
            m_sum=0;n_sum=0;//!!!!!!!!!!变量嵌套千万记得再赋值0!!!!!!
            for(j=1;j<=i/2;j++)
            {
                if(i%j==0) m_sum+=j;
            }
            if(m_sum<=n && m_sum>=m)
            {
                 for(j=1;j<=m_sum/2;j++)
                 {
                    if(m_sum%j==0) n_sum+=j;
                 }
                if(n_sum==i&& i<m_sum)
                {
                    isNo=1;
                    printf("%d %d\n",i,m_sum);
                //  i=m_sum;
                }
            }
        }
        if(isNo==0)
        {
            printf("NONE\n");
        }
        end=clock();
    printf("%d",end-start); 
    }

    return 0;
}

待扩展:

质因数
一个数的所有约数的和
一个数因数个数
筛法求素数

全部评论

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务