JAVA编程题:找出1000以内的完数:一个数如果恰好等于它的因子之和,这个数就称为 “完数 “。例如6=1+2+3.
include iostream
using namespace std;
int main() {
for (int i = 2; i = 1000; i++) {//从2到1000的数
int sum = 0;//因子总和
for (int j = 1; (j * j) = i; j++) {//j做除数,√n复杂度,减少一半的计算量
if (i % j == 0) {//可以整除,为其因子
sum = j + (i / j) + sum;//因子之和
}
}
if ((sum – i) == i) cout “1000以内的完数:” i endl;//因子之和减去其本身(1*i也为其因子)如果等于这个数本身,则为完数
}
}
扩展资料
在数学领域,6是第一个完全数,也是最小的完全数。所谓完全数(又称完美数或完备数),是一种特殊的自然数;它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。
例如6有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6;第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。公元前6世纪的古希腊数学家、哲学家毕达哥拉斯是最早探究完全数的人,他已经知道6和28这两个自然数是完全数了。
参考资料来源:百度百科-C语言
用java代码求1000之内的所有完全数
import java.util.ArrayList;
public class Testa {
public static void main( String[] args ) {
ArrayListInteger arrayList = new ArrayListInteger();
for ( int i = 1; i = 1000; i++ ) {
int k=0;
for(int j=1;ji;j++){
if(i%j==0){
k+=j;
}
}
if(k==i){
arrayList.add( i );
}
}
System.out.println(arrayList);
}
}
java求1000以内的完数有哪些
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print(“输入数字:”);
int k = sc.nextInt();
String answer = “完数有: “;
long startTime = System.currentTimeMillis();
for (int i = 1; i = k; i++) {
int n = 0;
for (int j = 1; j = (i / 2); j++) {
if (i % j == 0) {
n += j;
}
}
if (n == i) {
answer += i + ” “;
}
}
long endTime = System.currentTimeMillis();
System.out.println(answer);
System.out.println(“Time use:” + (endTime – startTime) + “ms”);
sc.close();
}
}
编写java循环程序,找出1000以内的所有完数
public class Test {
public static void main(String[] args) {
int i,j,sum; //sum用来存放因子之和
for(i=1;i1000;i++) //对1到1000以内的数依次尝试
{
sum = 0; //给sum赋值,同时也是对上一次的值清空
for(j=1;j=i/2;j++) //查找因子
{
if(i%j==0) // 如果是因子
{
sum+=j; //把当前的因子累加到sum中
}
}
if(sum==i) //判断是不是完数,即因子之和等于自身
{
System.out.print(i+” its factors are: “); //是完数,输出
for(j=1;j=i/2;j++) //再次找出这个完数的因子
{
if(i%j==0) //输出各个因子
System.out.print(j+”, “);
}
System.out.println();
}
}
}
}
这些题百度里面都是找得到的
java求1000以内的完数且输出因子?
public class test{
private static boolean isZhiShu(int num){
int count = 0;
for (int i = 1; i num; i++) {
if(num%i==0){
count++;
}
}
if (count==0) {
return true;
}else {
return false;
}
}
private static boolean calc(int num){
int sum = 0;
if (isZhiShu(num)==false) {
for (int i = 1; i num; i++) {
if (num%i==0) {
sum+=i;
}
}
}
if (sum==num) {
return true;
}else {
return false;
}
}
public static void showYinShu(int num){
if (calc(num)==true) {
System.out.print(num+”=”);
for (int i = 1; i num; i++) {
if(num%i==0){
if(num/2!=i){
System.out.print(i+”+”);
}else{
System.out.print(i);
}
}
}
System.out.println(“”);
}
}
public static void main(String[] args) {
System.out.println(“1000以内完数有:”);
for (int i = 1; i = 1000; i++) {
showYinShu(i);
}
}
}