首页 > 其他分享 >完数

完数

时间:2023-05-31 16:35:17浏览次数:28  
标签:BigInteger java String 完数 import public


题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1114


题意:给定一个数n,求满足条件大于等于n的最小的完数。


分析:我们先把前13个完数存进数组,然后比较即可。因为第13个完数的位数已经大于100位了,所以再大的就用不着了。

再利用Java的BigInteger进行比较很方便。



import java.io.*;
import java.util.*;
import java.math.BigInteger;
 
public class Main{
		public static void main(String[] args){
				Scanner cin = new Scanner(System.in);
				String[] str = {
						"6",
						"28",
						"496",
						"8128",
						"33550336",
						"8589869056",
						"137438691328",
						"2305843008139952128",
						"2658455991569831744654692615953842176",
						"191561942608236107294793378084303638130997321548169216",
						"13164036458569648337239753460458722910223472318386943117783728128",
						"14474011154664524427946373126085988481573677491474835889066354349131199152128",
						"23562723457267347065789548996709904988477547858392600710143027597506337283178622239730365539602600561360255566462503270175052892578043215543382498428777152427010394496918664028644534128033831439790236838624033171435922356643219703101720713163527487298747400647801939587165936401087419375649057918549492160555646976"
						};
				BigInteger data[] = new BigInteger[15];
				for(int i=0;i<13;i++)
					data[i] = new BigInteger(str[i]);
				while(cin.hasNextBigInteger()){
						BigInteger n = cin.nextBigInteger();
						for(int i=0;i<13;i++){
								if(data[i].compareTo(n) == 0 || data[i].compareTo(n) == 1){
										System.out.println(data[i]);
										break;
								}
						}
				}
		}
}





标签:BigInteger,java,String,完数,import,public
From: https://blog.51cto.com/u_16146153/6388088

相关文章

  • 完数
    #include<stdio.h>intmain(){ intm,n; scanf("%d%d",&m,&n); inti,j; intsum=0; intflag=0; for(i=m;i<=n;i++) { sum=0; for(j=1;j<i;j++) if(i%j==0) sum+=j; if(sum==1) { flag=1; printf("%ditsfactorsare1",......
  • 完数
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>main(){ inti,j,s,n; printf("输入所范围的上限:"); scanf("%d",&n); for(j=2;j<=n;j++) { s=1; //保证每次循环i的初值为1 for(i=2;i<=j/2;i++) if(j%i==0)......
  • 完数
    一、问题描述求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。二、问题分析根据完数的定义,解决本题的关键是计算出所选取的整数i(i的取值范围不固定)的因子(因子就是所有可以整除这个数的数......
  • 编程找出 1000 以内的所有完数
    一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。perfect_number_list=[]forperfect_numberinrange(2,1000):#找出一个数的所有因子,加入到因数列表里factor_list=[]forfactorinrange(1,perfect_......
  • 打卡5.9——求某一范围内完数的个数
    如果一个数等于它的因子之和,则称该数为完数,例如“6”的因子为1,2,3,而6=1+2+3,因此6是完数问题分析:假设一个数d,然后计算出它的每个因子,用到for循环,假如是a,b,c,然后进行一个判断如果a+b+c=d,就说明d是完数,应该要用到两层循环,最外层循环从2开始,一直到d,内层循环从1开始,一直到a,然后开始取余......
  • 3.1完数
    1.问题描述求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。2.代码#include<stdio.h>intmain(){ intn,N,count=0,sum,i,j;//n,N确定区间范围 scanf("%d,%d",&n,&N); for(i=n;i<N;i++) { ......
  • 完数(完全数)
    问题描还求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。代码实现#include<iostream>#include<cmath>usingnamespacestd;intmain(){ intx; cin>>x; for(intj=2;j<=x;......
  • 完数
    求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为“完数”(或“完全数”)。例如,例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”。我们首先要确定一个上限,在这个上限范围内我们通过for循环找出符合条件的数则为完数。 #include<iostream>usingnamespacestd;intm......
  • day 22 完数
    1.从1开始遍历到给定上限,此时数记为M;2.有数M,由循环去遍历每一个小于M的数,并由sum记录;3.当sum=M时,即为完数进行输出;#include<iostream>usingnamespacestd;intmain(){intMax,sum;printf("请输入上限数:");cin>>Max;for(intM=1;M<=Max;M++){s......
  • 完数
    一、问题描述求某一范围内完数的个数。如果一个数等于它的因子之和,则称该数为完数。列如,6的因子为1,2,3而1+2+3=6因此6是完数。二、设计思路   两个循环嵌套,最外层是范围,内层是找数的因子的循环。可以用数求余是否等于0来判断是否为因子,三、流程图 四、伪代码......