新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public class QinMi {
创新互联公司是一家专注于成都网站制作、成都做网站与策划设计,东至网站建设哪家好?创新互联公司做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:东至等地区。东至做网站价格咨询:028-86922220
private int a[] = new int[999];//存储2-1000的每个数的因子和
private int duiShui = 0;//亲密数的对数
public int[] jiSuan() {
for (int i = 2; i = 1000; i++) {//外层循环是从2-1000
int sum = 0;
for (int j = 1; j i; j++) {//判断该数是不是可以被整除、排除本身
if (i % j == 0) {
sum += j;//计算该数的因子和
}
a[i - 2] = sum;//存储到容器中
}
}
return a;
}
public void howMany() {//计算有多少对
for (int i = 0; i a.length - 1; i++) {//用的是选择排序的思想
for (int j = i + 1; j a.length; j++) {
if (a[i] == a[j]) {//如果相等对数就增加一次
duiShui++;
}
}
}
System.out.println(duiShui);
}
public static void main(String[] args) {
QinMi a = new QinMi();
a.jiSuan();
a.howMany();
}
import java.util.*;
public class Main{
public static void main (String [] args) {
boolean [] found = new boolean[1001];
int t;
for (int i = 2; i 1000; i++) {
if (!found[i]) {
t = find(i);
found[i] = true;
if (t = 1000) found[t] = true;
if (find(t) == i)
System.out.printf("%d, %d\n", i, t);
}
}
}
private static int find (int n) {
int result = 0;
for (int i = 2; i n; i++)
if (n % i == 0)
result += i;
return result;
}
}
注意,此题中的亲密数定义似乎和传统的定义不一样,此题中是除去1和自身,而传统的定义是包括1。
我的输出是
48, 75
140, 195
public static void main(String[] args) {
for(int i = 20; i = 1000; i++) {
int pair = intimateNumber(i);
if (pair i intimateNumber(pair) == i) {
System.out.println(i + ", " + pair);
}
}
}
public static int intimateNumber(int n) {
if(n = 0) {
return -1;
}
int squareRoot = (int)Math.floor(Math.sqrt(n));
int result = 0;
for(int i = 2; i = squareRoot; i++) {
if(n % i == 0) {
if(i * i != n) {
result += i + n / i;
} else {
result += i;
}
}
}
return result;
}
#includestdio.h int main() { int a,i,b,n; printf("There are following friendly--numbers pair smaller than 3000:\n"); for(a=1;a3000;a++) /*穷举1000以内的全部整数*/ { for(b=0,i=1;i=a/2;i++) /*计算数a的各因子,各因子之和存放于b*/ if(!(a%i))b+=i; /*计算b的各因子,各因子之和存于n*/ for(n=0,i=1;i=b/2;i++) if(!(b%i))n+=i; if(n==aab) printf("%4d..%4d ",a,b); /*若n=a,则a和b是一对亲密数,输出*/ } } *运行结果 There are following friendly--numbers pair smaller than 3000: 220.. 284 1184.. 1210 2620.. 2924
按照你的要求编写的求n以内的亲密数对的Java程序如下
import java.util.Scanner;
public class CCC {
public static void main(String[] args) {
int a,b,i,n,num;
System.out.println("请输入一个正整数");
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
for(a=1;an;a++)
{
for(b=0,i=1;i=a/2;i++)
if(a%i==0) b+=i;
for(num=0,i=1;i=b/2;i++)
if(b%i==0) num+=i;
if(num==a ab)
System.out.println(a+","+b);
}
}
}
运行结果
请输入一个正整数
3000
220,284
1184,1210
2620,2924