黑马程序员技术交流社区
标题:
又是一道很多人都做不出来的基础题
[打印本页]
作者:
更上一层
时间:
2014-9-22 23:34
标题:
又是一道很多人都做不出来的基础题
package com.itheima;
/**
* 第8题、 编程打印所有的3位质数,质数特点:只能被1和其本身整除
*
*
*
*/
public class Test8 {
/**
* @param args
*/
public static void main(String[] args) {
boolean flag = true;
for(int j = 2;j<=999;j++){
for(int i=2;i<=j/2;i++){
if(j%i==0){
flag = false;
break;
}
}
if(flag){
System.out.println(j);
}
flag = true;
}
}
}
复制代码
作者:
陈兆辉
时间:
2014-9-23 10:23
不是求3位的质数么,为什么外循环要从2开始?从100开始不就行了么?
作者:
Huberry
时间:
2014-9-23 11:21
//判断是否为质数,只要判断到这个数的平方根即可,往后的判断都是重复的,如果数据大的话这可以明显的提高效率
public class Test110 {
public static void main(String args[]){
for(int i=100; i<1000 ;i++){
if(isPrime(i))
System.out.println(i);
}
}
public static boolean isPrime(int num){//判断是否为质数
for (int i=2;i*i<=num ; i++){//
if(num%i==0)
return false;
}
return true;
}
}
复制代码
作者:
w936074874
时间:
2014-9-23 20:46
质数是什么? 我可以理解为不能被2整除吗
作者:
Imp_x
时间:
2014-9-23 20:56
w936074874 发表于 2014-9-23 20:46
质数是什么? 我可以理解为不能被2整除吗
除了一跟他本身之外不能被其他数整除的数,例如2、3、5、7、11、13这些
作者:
THE_FUTURE
时间:
2014-9-23 21:35
质数是什么!!!!
作者:
Mr_Unhappy
时间:
2014-9-23 22:44
import java.util.ArrayList;
import java.util.List;
/**
*第八题: 编程打印所有的3位质数,质数特点:只能被1和其本身整除
* @author Ming
*
*/
public class Test8 {
public static void main(String[] args) {
//遍历所有的三位整数
for(int i = 100;i <= 999;i++){
panDuan(i);
}
}
public static void panDuan(int x){
//创建集合用于存放x或者x的整除数
List<Integer> list = new ArrayList<Integer>();
list.add(x);
//为了提高效率,由数学常识可是,如果一个数在他的平方根内没有整除数,就不会再有了,因此取得x的平方根,并循环
for(int i = 2; i <= Math.sqrt(x);i++){
//如果x有整除数i就将i放入list集合中
if(x%i == 0){
list.add(i);
}
}
//如果list集合的长度还是1代表,x没有整除数,则讲x输出
if(list.size() == 1)
System.out.println(list.get(0));
}
}
复制代码
分享一下我的算法
作者:
Mr_Unhappy
时间:
2014-9-23 22:46
看完三楼的算法,我发现我逗了
作者:
逍遥呆
时间:
2014-9-24 00:29
应该从一百开始吧
作者:
cherry@cookie
时间:
2014-9-25 00:58
好高端!!!
作者:
wawsc5354524
时间:
2014-9-25 01:28
学习了,呵呵
作者:
姠佐メ亾佑つ
时间:
2014-9-25 04:18
package com.itheimatest;
/*
* 题目:输入一个正整数N,打印出从1到N之间的所有质数。
*/
import java.util.*;
public class PrimeNumber_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入一个大于一的正整数:");
int n = sc.nextInt();
if (n > 1)
printPrimeNumber(n);
else
System.out.println("FALSE!");
}
/*
* printPrimeNumber(int num)作用:将大于1并且小于num的质数输出 有未知参数--最大值,并且没有返回值
*/
static void printPrimeNumber(int num) {
int[] arr = new int[num];
int sum = 0;
for (int i = 2; i < num; i++) {// i表示需要进行判断的数
int temp = 0;// temp为标志变量,如果出现和数,就改变数值,以此来判断该数是否为质数
for (int j = 2; j <= i / 2; j++) {// j是用来帮助判断i的数,范围是2~i/2。
// 如果小于i/2的数都无法整除i,那么大于i/2的数也不会 整除i
if (i % j == 0) {
temp = 1;
break;// 一旦判断出这个数不是质数,就结束本次循环,并将标志设为1
}
}
if (temp == 0)
arr[sum++] = i;
}
System.out.println("在 1 到 " + num + " 之间的质数有" + (sum - 1) + "个。\n分别是:");
for (int i = 0; i < sum; i++)
System.out.print(arr[i] + "\t");
}
}
复制代码
作者:
姠佐メ亾佑つ
时间:
2014-9-25 04:26
简单容易理解三位质数的方法;和楼上的哥们思路一样
package com.itheimatest;
/**
* @author Administrator
*
*需求: 编程打印所有的3位质数,质数特点:只能被1和其本身整除
*
* 分析:
* 判断条件:除以一个数的(2到这个数的平方根) ,若都不能整除就是质数
*
*/
public class PrimeNember_2 {
public static void main(String[] args) {
int count = 0;
//遍历获取从100-999的所有数,即被除数
for(int i=100;i<1000;i++){
//定义是否是质数的返回值变量
boolean flag = true;
//判断这个数是不是质数
//除数从2开始到这个数的平方根
for(int j=2;j<=Math.sqrt((double)i);j++){
if(i%j==0){
flag = false;
break;
}
}
if(flag){
//输出
System.out.println(i );
count++;
System.out.println(count);
}
}
}
}
复制代码
作者:
编程学徙
时间:
2014-9-25 05:20
第一次试着默写的时候写错了……没考虑到每一个数判断完了以后,要把flag赋值为true.....
class ZiShu
{
public static void main(String[] args)
{
int i,j,k=1;
boolean flag;
flag = true;
for(i=100;i<1000;i++)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
flag = false;
break;
}
}
if(flag)
{
System.out.print(i+"\t");
k++;
if(k%5==0)
{
System.out.println();
}
}
flag = true;
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2