北航计算机机试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;
}
待扩展:
质因数
一个数的所有约数的和
一个数因数个数
筛法求素数