早教吧作业答案频道 -->其他-->
:亲和数(AmicableNumber)某一天,tenshi看了一本趣味数学书,上面提到了亲和数tenshi看了数学书,提到亲和数:定义数对(x,y)为亲和数对且x、y各自的所有非自身正因子之和等于另一个数.例如(220
题目详情
:亲和数 ( Amicable Number ) 某一天,tenshi看了一本趣味数学书,上面提到了亲和数
tenshi看了数学书,提到亲和数:定义数对 (x,y) 为亲和数对且x、y各自的所有非自身正因子之和等于另一个数.例如 (220,284) 是亲和数对,220非自身正因子之和为 284,284非自身正因子之和220数对 (x,y ) 跟 (y,x) 被认为是同一数对,所以我们只考虑 x
tenshi看了数学书,提到亲和数:定义数对 (x,y) 为亲和数对且x、y各自的所有非自身正因子之和等于另一个数.例如 (220,284) 是亲和数对,220非自身正因子之和为 284,284非自身正因子之和220数对 (x,y ) 跟 (y,x) 被认为是同一数对,所以我们只考虑 x
▼优质解答
答案和解析
构造亲和数的公式:如果三个数:p=3*2^(n-1)-1,q=6*2^n-1,r=9*2^(2n-1)-1都是素数,且p,q>2,则2^npq和2^nr就是一对亲和数.例如,取n=2,得p=5,q=11,r=71,则2^2*5*11=220和2^2*71=284是一对亲和数.
计算亲和数的JAVA程序
importjava.util.ArrayList; import java.lang.Math; import java.lang.Double;
public classlove_num {
public static voidmain(String[] args)
{
int intMain = 2;
int intBig = 0;
try
{
intBig =Integer.parseInt(args[0].toString());
}
catch (Exception e)
{
System.out.println("error:"+ e);
System.out.println("typecommand like \"java love_num 50\"");
return;
}
while (true)
{
ArrayListlistYakuSu1 = findYakuSu(intMain);
int intSum1 =addYakuSu(listYakuSu1);
//String strDebug ="";
//String strDebug2= "";
if ( intSum1 ==intMain )
{
System.out.println("selfnum:" + intSum1);
//for (int i = 0; i< listYakuSu1.size(); i ++)
//{
// strDebug +=listYakuSu1.get(i);
// strDebug +=",";
//}
//System.out.println("YakuSu:"+ strDebug);
}
else
{
ArrayListlistYakuSu2 = findYakuSu(intSum1);
int intSum2 =addYakuSu(listYakuSu2);
if ( intSum2 ==intMain )
{
System.out.println("lovenum:" + intMain + "--" + intSum1);
//for (int i = 0; i< listYakuSu1.size(); i ++)
//{
// strDebug +=listYakuSu1.get(i);
// strDebug +=",";
//}
//System.out.println("YakuSu:"+ strDebug);
//for (int i = 0; i< listYakuSu2.size(); i ++)
//{
// strDebug2 +=listYakuSu2.get(i);
// strDebug2 +=",";
//}
//System.out.println("YakuSu:"+ strDebug2);
}
}
intMain ++;
if (intMain >intBig)
{
return;
}
}
}
public static intaddYakuSu (ArrayList listYakuSu)
{
//System.out.println("addYakuSustart ");
int sum = 0;
int temp = 0;
for (int i = 0; i< listYakuSu.size() ; i ++ )
{
temp =Integer.parseInt(listYakuSu.get(i).toString());
sum += temp;
}
//System.out.println("addYakuSuend " + sum);
//System.out.println("");
return (sum);
}
public staticArrayList findYakuSu (int intNum)
{
//String strDebug ="";
//System.out.println("findYakuSustart " + intNum);
ArrayListlistYakuSu = new ArrayList();
double dbNum =(double)intNum;
double dbRoot =Math.sqrt(dbNum);
Double d = newDouble(dbRoot);
int intRoot =d.intValue() ;
//System.out.println("root:"+ intRoot);
// if (intHalf * 2== intNum)
// {
// }
// else
// {
// intHalf ++;
// }
listYakuSu.add("1");
for (int i = 2; i
计算亲和数的JAVA程序
importjava.util.ArrayList; import java.lang.Math; import java.lang.Double;
public classlove_num {
public static voidmain(String[] args)
{
int intMain = 2;
int intBig = 0;
try
{
intBig =Integer.parseInt(args[0].toString());
}
catch (Exception e)
{
System.out.println("error:"+ e);
System.out.println("typecommand like \"java love_num 50\"");
return;
}
while (true)
{
ArrayListlistYakuSu1 = findYakuSu(intMain);
int intSum1 =addYakuSu(listYakuSu1);
//String strDebug ="";
//String strDebug2= "";
if ( intSum1 ==intMain )
{
System.out.println("selfnum:" + intSum1);
//for (int i = 0; i< listYakuSu1.size(); i ++)
//{
// strDebug +=listYakuSu1.get(i);
// strDebug +=",";
//}
//System.out.println("YakuSu:"+ strDebug);
}
else
{
ArrayListlistYakuSu2 = findYakuSu(intSum1);
int intSum2 =addYakuSu(listYakuSu2);
if ( intSum2 ==intMain )
{
System.out.println("lovenum:" + intMain + "--" + intSum1);
//for (int i = 0; i< listYakuSu1.size(); i ++)
//{
// strDebug +=listYakuSu1.get(i);
// strDebug +=",";
//}
//System.out.println("YakuSu:"+ strDebug);
//for (int i = 0; i< listYakuSu2.size(); i ++)
//{
// strDebug2 +=listYakuSu2.get(i);
// strDebug2 +=",";
//}
//System.out.println("YakuSu:"+ strDebug2);
}
}
intMain ++;
if (intMain >intBig)
{
return;
}
}
}
public static intaddYakuSu (ArrayList listYakuSu)
{
//System.out.println("addYakuSustart ");
int sum = 0;
int temp = 0;
for (int i = 0; i< listYakuSu.size() ; i ++ )
{
temp =Integer.parseInt(listYakuSu.get(i).toString());
sum += temp;
}
//System.out.println("addYakuSuend " + sum);
//System.out.println("");
return (sum);
}
public staticArrayList findYakuSu (int intNum)
{
//String strDebug ="";
//System.out.println("findYakuSustart " + intNum);
ArrayListlistYakuSu = new ArrayList();
double dbNum =(double)intNum;
double dbRoot =Math.sqrt(dbNum);
Double d = newDouble(dbRoot);
int intRoot =d.intValue() ;
//System.out.println("root:"+ intRoot);
// if (intHalf * 2== intNum)
// {
// }
// else
// {
// intHalf ++;
// }
listYakuSu.add("1");
for (int i = 2; i
看了 :亲和数(AmicableN...的网友还看了以下:
勾股定律勾股定律是一条古老的数学定律,它有很多种证明方法,我国汉代数学家赵爽根据弦图,利用面200 2020-04-26 …
求问啊,英语线是不是按数学除以1.5定的?统计了历年很多学科的数学和英语,都符合这个规律,英语线是 2020-05-15 …
代数几何公理定理听我们老师说参加IMO的同学都有发一本数学定理的书,这书已经出版了(沈老师编的,具 2020-05-16 …
数学的定义是什么?数学学不好的原因是不理解这门学科是怎么来的,也不知道他的定义所导致的.下面是我个 2020-06-08 …
『问题情境』勾股定理是一条古老的数学定理,它有多种证明方法,我国汉代数学家赵爽根据弦图,利用面积法 2020-06-09 …
勾股定理是一条古老的数学定理,它有很多种证明方法,我国汉代数学家赵爽根据弦图,利用面积法进行证明, 2020-06-09 …
谁能提供我一些数学定理初一到初三所有的定理.如韦达定理,弦切角定理,切割线定理等等 2020-07-15 …
初中阶段的数学课外可以掌握的定理除了要掌握课本中该掌握的定理成绩较好的同学还可以掌握一些初中数学定 2020-07-15 …
为什么勾股定理是人类最早发现的数学定理?我学勾股定理的时候,觉得这个定理的发现不简单,可为什么许多 2020-07-26 …
勾股定理是一条古老的数学定理,它有很多种证明方法,我国汉代数学家赵爽根据弦图,利用面积进行了证明. 2020-08-02 …