早教吧作业答案频道 -->其他-->
:亲和数(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...的网友还看了以下:
设f(x)是定义在R上的函数,且在(—∞,+∞)上是增函数,又F(x)=f(x)-f(-x),那么 2020-06-03 …
已知f(x+x/1)=x^2+(1/x^2)+3,求f(x)已知f(x/x+1)=x^2+1/x^ 2020-06-07 …
一道奇怪的数学证明题:设定义在R上的连续函数f(x)满足f'(x)=f(x)且有f(0)=0,证一 2020-06-22 …
已知函数f(x)的定义域D=(-∞,0)∪(0,+∞),且对于任意x1,x2∈D已知函数f(x)的 2020-06-25 …
若X是一个非空集合,M是一个以X的某些子集为元素的集合,且满足:①X∈M、∅∈M;②对于X的任意子 2020-08-01 …
设a是一复数,且是数域F上非零多项式g(x)的根,令W={f(x)∈F[x]|f(a)=0}证明在 2020-08-02 …
有一个定理是:若f(x)|g(x)且g(x)|f(x)那么g(x)和f(x)相差一个零次因式可是如 2020-08-02 …
一写个只含有x,且一次项系数为-2的二次三项式 2020-08-02 …
若关于x的一元二次方程a(x-x1)(x-x2)=0(a≠0且x1≠x2)与关于x的一元一次方程dx 2020-10-31 …
高一函数已知定义域为R的偶函数y=f(x)的一个单调增区间是(2,6),则函数y=f(2-x)图象A 2020-12-08 …