扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
求1-N以内的所有素数,实现思路如下:
创新互联专注于台州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供台州营销型网站建设,台州网站制作、台州网页设计、台州网站官网定制、小程序开发服务,打造台州网络公司原创品牌,更为您提供台州网站排名全网营销落地服务。
1、 得到1到n之间的素数,存到一个ArrayList集合。
2、判断一个数是不是素数:只能被1和本身整除
说明:从2开始除,不需要到n,也就是循环条件是 n 就可以,这之间只要被整除了,那么他就不是素数了。
3、设置主函数,运行 getPrimeNumberToN获取限定范围内的素数。
执行结果图:
扩展资料:
实现功能的编程事项:
1、模块化思想。
先拆分需求,先拆分先考虑怎么确定一个数是不是素数,然后再复用到所有。不能把方法堆到一起,否则无法复用代码。
2、注意注释。
就算是自己的测试代码,尽量写清楚注释,这样即使过了三个月,再看代码,也能清晰明了。不要觉得简单,就懒得注释。
3、注意参数命名。
从类名到方法名,再到变量名,都不能随意取名,关于这个命名,不要嫌弃长,重点是意思清楚明白。见名知意(语义化),是最好的。
最大质因数
13195的所有质因数为5、7、13和29。600851475143最大的质因数是多少?
long i=2,n=600851475143L;
while (in){ //避免n本身就是质数,否则循环到sqrt(n)就可以了
if(n % i==0){
n=n/i;
i--;
}
i++;
}
System.out.println( i );
第10001个素数
列出前6个素数,它们分别是2、3、5、7、11和13。我们可以看出,第6个素数是13。
第10,001个素数是多少?
第1至10001都找出来了:
int a[]=new int[10001];
a[0]=2;
a[1]=3;
int n=5,k,i=2;
while (i10001){
for ( k=0;ki;k++) if(n % a[k] ==0 ) break;
if (k ==i ) a[i++]=n;
n+=2;
}
System.out.println(a[10000] );
一个好的算法,要经的起推敲,不要只求结果
import java.util.ArrayList;
import java.util.List;
public class Primes {
public static void main(String[] args) {
// 求素数
ListInteger primes = getPrimes(200);
// 输出结果
for (int i = 0; i primes.size(); i++) {
Integer prime = primes.get(i);
System.out.printf("%8d", prime);
if (i % 10 == 9) {
System.out.println();
}
}
}
/**
* 求 n 以内的所有素数
*
* @param n
* 范围
*
* @return n 以内的所有素数
*/
private static ListInteger getPrimes(int n) {
ListInteger result = new ArrayListInteger();
result.add(2);
for (int i = 3; i = n; i += 2) {
if (!divisible(i, result)) {
result.add(i);
}
}
return result;
}
/**
* 判断 n 是否能被整除
*
* @param n
* 要判断的数字
* @param primes
* 包含素数的列表
*
* @return 如果 n 能被 primes 中任何一个整除,则返回 true。
*/
private static boolean divisible(int n, ListInteger primes) {
for (Integer prime : primes) {
if (n % prime == 0) {
return true;
}
}
return false;
}
}
首先介绍下:质数是除了本身和1以外,没有质因数,就是没有数能够整除之;合数是除了本身和1以外还有第三个数能整除之。
具体示例代码如下:
public class Demo2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入一个数:");
int num = scan.nextInt();
int index = 0;//使用一个数来标记是质数还是合数
for (int i = 2; i num; i++) {
if (num % i == 0) {
index++;
}
}
if (index == 0) {//index等于0表示质数
System.out.println("这是个质数");
}
else {//index大于0表示合数
System.out.println("这是个合数");
}
}
}
需要注意的是:1不算质数也不算合数。
int sum =0;int x=0;
for(int m =2,m=100,m++){//循环从2开始,2最小的质数,循环到100
for(int n = 2,nm,n++){//循环除以比自己小的数字
if(m%n==0){//若余数为0,则个数加一,即去的可被整除的数字的个数
x++;
}
}
if(x==0){//当m不可以整除比自己小的整数后,加sum。
sum+=m;
}
}
如此循环,到100结束,不能整除小于自身的数字的和就是sum了。
往楼主采纳
参考代码如下:
packagetest;
publicclassTest{
publicstaticvoidmain(String[]args){
intj;
for(inti=2;i=100;i++)//1不是素数,所以直接从2开始循环
{
j=2;
while(i%j!=0)
j++;//测试2至i的数字是否能被i整除,如不能就自加
if(j==i)//当有被整除的数字时,判断它是不是自身
System.out.println(i);//如果是就打印出数字
}
}
}
扩展资料:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流