用C语言编一道题目
本人在学C语言。题目:编一个程序,输出6至10000之间的亲密数对,若a、b是亲密数对,则a的因子和等于b、b的因子和等于a且a不等于b。本人编写如下,但运行起来总是不对...
本人在学C语言。
题目:
编一个程序,输出6至10000之间的亲密数对,若a、b是亲密数对,则a的因子和等于b、b的因子和等于a且a不等于b。
本人编写如下,但运行起来总是不对。请大侠指点下。
#include<stdio.h>
#define HIGH 10000
#define LOW 6
void p(int a, int b);
int main()
{
int a = LOW ;
int i;
printf("满足题意的亲密数对有:");
for(;a <= HIGH; a++){
for(i = 1;i <= (HIGH - LOW);i++){
p(a, a + i);
}
}
return 0;
}
void p(a, b)
{
int m = 1, n = 1;
int s = 0, sum = 0;
for(;m <= a;m++){
if(a % m == 0){
s = s + m;
}
}
for(;n <= b;n++){
if(b % n == 0){
sum += n;
}
}
if(s == b && sum == a)
printf("\n<%d, %d>", a, b);
}
希望大侠能给我指点我错在何处。。而不是给个程序。。辛苦了。 展开
题目:
编一个程序,输出6至10000之间的亲密数对,若a、b是亲密数对,则a的因子和等于b、b的因子和等于a且a不等于b。
本人编写如下,但运行起来总是不对。请大侠指点下。
#include<stdio.h>
#define HIGH 10000
#define LOW 6
void p(int a, int b);
int main()
{
int a = LOW ;
int i;
printf("满足题意的亲密数对有:");
for(;a <= HIGH; a++){
for(i = 1;i <= (HIGH - LOW);i++){
p(a, a + i);
}
}
return 0;
}
void p(a, b)
{
int m = 1, n = 1;
int s = 0, sum = 0;
for(;m <= a;m++){
if(a % m == 0){
s = s + m;
}
}
for(;n <= b;n++){
if(b % n == 0){
sum += n;
}
}
if(s == b && sum == a)
printf("\n<%d, %d>", a, b);
}
希望大侠能给我指点我错在何处。。而不是给个程序。。辛苦了。 展开
4个回答
推荐于2017-05-22
展开全部
//---------------------------------------------------------------------------
#include<stdio.h>
#define HIGH 10000
#define LOW 6
int p(int a) /*寻找a的亲密数,找到则返回该亲密数,否则返回-1*/
{
int i;
int suma=0,sumb=0;
for (i=1; i < a; i++) {
suma+=(a%i)?0:i;
}
for (i=1; i<suma; i++) {
sumb+=(suma%i)?0:i;
}
return (a==sumb&&a!=suma)?suma:-1;
}
int main(void)
{
int a=LOW,b;
while (a<HIGH)
if ((b=p(a++))!=-1&&a<b) {
printf("<%d,%d>\n",a-1,b);
}
return 0;
}
//---------------------------------------------------------------------------
#include<stdio.h>
#define HIGH 10000
#define LOW 6
int p(int a) /*寻找a的亲密数,找到则返回该亲密数,否则返回-1*/
{
int i;
int suma=0,sumb=0;
for (i=1; i < a; i++) {
suma+=(a%i)?0:i;
}
for (i=1; i<suma; i++) {
sumb+=(suma%i)?0:i;
}
return (a==sumb&&a!=suma)?suma:-1;
}
int main(void)
{
int a=LOW,b;
while (a<HIGH)
if ((b=p(a++))!=-1&&a<b) {
printf("<%d,%d>\n",a-1,b);
}
return 0;
}
//---------------------------------------------------------------------------
展开全部
#include<stdio.h>
#define HIGH 10000
#define LOW 6
main()
{
int a,b,n,i;
for(a=LOW;a<=HIGH;a++)
{
for(b=0,i=1;i<=a/2;i++)
if(a%i==0) b+=i;
for(n=0,i=1;i<=b/2;i++)
if(b%i==0) n+=i;
if(n==a&&a<b)
printf("%4d...%4d\n",a,b);
}
}
//这是我对于您程序的改写和补充 希望有所帮助 :)
#define HIGH 10000
#define LOW 6
main()
{
int a,b,n,i;
for(a=LOW;a<=HIGH;a++)
{
for(b=0,i=1;i<=a/2;i++)
if(a%i==0) b+=i;
for(n=0,i=1;i<=b/2;i++)
if(b%i==0) n+=i;
if(n==a&&a<b)
printf("%4d...%4d\n",a,b);
}
}
//这是我对于您程序的改写和补充 希望有所帮助 :)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#define HIGH 10000
#define LOW 6
int p(int a);//p是求a除了自身的所有因数的和
int main()
{
int a = LOW ,b;
int i;
printf("满足题意的亲密数对有:\n");
for(;a <= HIGH; a++)
{
b=p(a); //这边
if(b<=a) continue;
if(p(b)==a) printf("%d %d\n",a,b);
}
return 0;
}
int p(int a)
{
int m = 1;
int sum = 0;
for(;m < a;m++)
{
if(a % m == 0)
{
sum+=m;
}
}
return sum;
}
#define HIGH 10000
#define LOW 6
int p(int a);//p是求a除了自身的所有因数的和
int main()
{
int a = LOW ,b;
int i;
printf("满足题意的亲密数对有:\n");
for(;a <= HIGH; a++)
{
b=p(a); //这边
if(b<=a) continue;
if(p(b)==a) printf("%d %d\n",a,b);
}
return 0;
}
int p(int a)
{
int m = 1;
int sum = 0;
for(;m < a;m++)
{
if(a % m == 0)
{
sum+=m;
}
}
return sum;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你补充下 什么是因子和?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询