问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 一道算法题

发布网友 发布时间:2022-05-16 01:49

我来回答

5个回答

热心网友 时间:2023-10-08 21:17

public class Tst {

public static void main(String[] args) {

int num = 2520;

for(int i = 11; i <= 20; i++){
if(!isDivByNumLessThanTen(i)){
num *= i;
}
}

System.out.println(num);

}

private static boolean isDivByNumLessThanTen(int num) {
int count = 0;
for(int i = 1; i <= 10; i++){
if(num % i == 0){
count++;
}
}

return count >= 2;
}

}

-------------结果
116396280

算法,检测11~20,如果能被1~10整除超过2个数字,那么就代表可能可以被2520整除,就不相乘,否则相乘。

恩。这个算法有问题,问题出在,譬如12 = 2*6符合条件,但是14=2*7, 2得约分已经用了一次了,不符合条件,所以得改进。

热心网友 时间:2023-10-08 21:17

public static void main(String[] args){

boolean flag = true;
int i = 0;
int j = 1;
while(flag){
j = 1;
i++;
while(i%j==0){
j++;
if(j>20){
flag = false;
}
}
}
//验证结果
for(int w = 1;w<=20;w++){
System.out.println(i+"/"+w+"="+i/w+"余数为"+i%w);
}
}
===================打印结果
232792560/1=232792560余数为0
232792560/2=116396280余数为0
232792560/3=77597520余数为0
232792560/4=58198140余数为0
232792560/5=46558512余数为0
232792560/6=38798760余数为0
232792560/7=33256080余数为0
232792560/8=29099070余数为0
232792560/9=25865840余数为0
232792560/10=23279256余数为0
232792560/11=21162960余数为0
232792560/12=19399380余数为0
232792560/13=17907120余数为0
232792560/14=16628040余数为0
232792560/15=15519504余数为0
232792560/16=14549535余数为0
232792560/17=13693680余数为0
232792560/18=12932920余数为0
232792560/19=12252240余数为0
232792560/20=11639628余数为0
==================================
2楼 116396280%16 = 8
=====================额写简单的还不给分啊
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class M {
public static void main(String[] args){
M m = new M();
int i = 2520;
int t = 2520;
for(int j=11;j<=20;j++){
if(i%j!=0){
t*=(m.getMaxNum(j,i)==-1?j:j/m.getMaxNum(j,i));
}
}
System.out.println(t);
}
/**
* 求两个数的最大公约数
* @param a
* @param b
* @return
*/
public int getMaxNum(int a,int b){
Set<Integer> l1 = getMaxNums(a);//a的约数集合
Set<Integer> l2 = getMaxNums(b);//b的约数集合
int k = -1;
for(int i : l1){
for(int j : l2){
if(i == j){
if(k<i){
k=i;
}
}
}
}
return k;
}

/**
* 求一个数的所有约数
* @param a
* @return
*/
public Set<Integer> getMaxNums(int a){
Set<Integer> l = new HashSet<Integer>();
for(int i = 2;i<a;i++){
if(a%i==0&&i<=a/2){
l.add(i);
}
}
return l;
}
}
======
打印结果232792560

热心网友 时间:2023-10-08 21:18

我只是举个例子
比如 2,3,4的最小公倍数是12
那么求2,3,4,9的最小公倍数
我想大家都知道是36吧
那么用楼上的算法 就会测试12是否能整除9 不能
就拿12*9=108 这对么?

下面是求最小公倍数的程序 不符合LZ的题意 但是可以验证下结果
int l=20;
int[] a=new int[l];
for(int i=0;i<l;i++){
a[i]=i+1;
}
int s=1;
boolean b;
for(int i=2;i<=l;){
b=false;
for(int j=0;j<l;j++){
if(a[j]%i==0){
a[j]=a[j]/i;
b=true;
}
}
if(b){
s*=i;
}else{
i++;
}
}
System.out.println(s);

还有其实2楼的程序挺好的
不能被2520整除的数有
11
13
16
17
19
此时只要再把他们与2520 的最大公约数除去 相当于
2520*11*13*2*17*19就是了追问但是这种算法,当数据大时,比如是求200以下的,这样是不是就很麻烦呢,要算多少数的最大公约数???

追答我想没什么改进了 这算最小公倍数 最大公约数 和 算π e一样 没什么好的算法 不然怎么能累死那么多数学叫兽

热心网友 时间:2023-10-08 21:18

internal class Program { private static void Main(string[] args) { /*
* *
* 2520
* is
* the
* smallest
* number
* that
* can
* be
* divided
* by
* each
* of
* the
* numbers
* from
* 1 to
* 10
* without
* any
* remainder. *
* What
* is
* the
* smallest
* number
* that
* is
* evenly
* divisible
* by
* all
* of
* the
* numbers
* from
* 1 to
* 20?
*/ int[] numbers = Enumerable.Range(1, 20).ToArray(); int prime = 2; int nextPrime = 2; int nextPrimePow2 = 2*2; for (int i = 1; nextPrimePow2 < 20; i++) { int n = numbers[i]; if (n == 0) continue; for (int j = i + 1; j < numbers.Length; j++) { int k = numbers[j]; if (k%prime == 0) { numbers[j] = 0; continue; } if (prime == nextPrime) nextPrime = k; } prime = nextPrime; nextPrimePow2 = nextPrime*nextPrime; } var primes = numbers.Where(p => p != 0 && p != 1).ToArray(); var primeNums = new int[primes.Length]; numbers = Enumerable.Range(1, 20).ToArray(); for (int i = 0; i < numbers.Length; i++) { int n = numbers[i]; for (int j = 0; j < primes.Length; j++) { int item = primes[j]; int k = 0; for (; ; k++, n /= item) { if (n % item != 0) break; } if (primeNums[j] < k) primeNums[j] = k; } } long result = 1; for (int i = 0; i < primes.Length; i++) { Console.WriteLine("{0}*{1}", primes[i], primeNums[i]); result *= (long)Math.Pow(primes[i],primeNums[i]); } Console.WriteLine(result); } }

热心网友 时间:2023-10-08 21:19

楼主这是在考验大伙的英语能力= =!
顶二楼
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 java 算法题,求思路求解方法 java 算法题 急! java算法题,帮忙解释下! java算法题,有会算的帮小弟解决下 一道JAVA算法题目 Java算法题:判断并输出101-200中所有素数,代码中单等号与双等号的区别? java算法题?急 请教两个java 算法题 JAVA算法题,你做的出来吗? Java算法练习题 豆腐和西红柿可以放一块吃吗? java算法题(在现等,急) 豆腐可以和百合炒番茄酱吗 离职转行怎么写求职简历 我怎么进不了QQ聊天室? 小中风的疾病发展 什么叫小中风 这样算是小中风吗?(急) 小中风能不能痊愈? 关于轻微中风,急! 深圳招商银行住房公积金预约电话 深圳住房公积金服务热线人工服务怎么老是说前面还有多少个人在排队,打了一个早上都是这么说的!郁闷! 罗成死的是哪一集 新 隋唐英雄里面罗成是哪一集死的!求具体集数 热带水果都上火吗? 电视剧 隋唐英雄传里,罗成是哪一集死的? 深圳市住房公积金管理中心人工热线电话怎么一直没人接听? 深圳住房公积金提取预约电话是多少 求“深圳市住房公积金管理中心”办公室电话,不是86366999,因为86366999一直无人接听。 我的情况化疗五次行吗? 什么情况下化疗四次放弃治疗,相信要是有参百益一定不会轻易放弃治疗的对吧? 新隋唐英雄传 罗成死是第几集 化疗了5次后,副作用太大,想停止可以吗 张卫健隋唐英雄 罗成第几集战死的?? 已经做了三次化疗了,以后不再做可以吗 张卫健版电视剧《隋唐英雄》罗成在哪一集死的,怎么死的? 我得了白血病己经化疗过两次,我现在不想化疗了,我想光吃中药,因为我上两次化疗抢救过好几次,太痛苦了 罗成怎么死的,在第几集 我姐姐患乳腺癌早期,已经作了五次化疗。不想作第六次,可以吗? 求 隋唐英雄中 张睿版罗成出场的所有集数并概括他出场的事件,谢了