黑马程序员技术交流社区
标题:
判断101-200之间有多少个素数
[打印本页]
作者:
小胡
时间:
2016-1-1 15:31
标题:
判断101-200之间有多少个素数
判断101-200之间有多少个素数,并输出所有素数(用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数)。
作者:
iori
时间:
2016-1-1 17:12
你是想知道代码怎么写,还只是随便说说?
作者:
小胡
时间:
2016-1-6 15:43
代码怎么写?
作者:
549208564
时间:
2016-1-6 17:53
其实我不知道什么是素数,所以不知道对不对,就将不能被2除的数打印出来,看到后回一下什么是素数
public class MySqrt {
public static void main(String[] args) {
sqrt(101, 200);
}
public static void sqrt(int start,int end){
int cunte=0;
for(;start<=end;start++){
if(start%2!=0){
cunte++;
System.out.println(start);
}
}
System.out.println(cunte);
}
}
作者:
fengfeng520
时间:
2016-1-6 21:49
代码怎么写?
作者:
空与夏虫语冰
时间:
2016-1-7 09:59
public static void main(String[] args) {
//设定三个集合
HashSet<Integer> list = new HashSet<>();
HashSet<Integer> list1 = new HashSet<>();
HashSet<Integer> list2 = new HashSet<>();
//往list添加元素
for (int i = 101; i <= 200; i++) {
list.add(i);
}
//遍历list,去掉偶数(不是素数的数);
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
if (it.next() % 2 == 0) {
it.remove();
}
}
//假如某奇数的平方在101-200中,讲该平方值加入list1
int x = 0;
for (int i = 0; i < 15; i++) {
x = (2 * i + 1 ) * (2 * i + 1);
if (x > 101 && x < 200) {
list1.add(x);
}
}
//将奇数与奇数相乘,如果积在101-200之间,讲该积假如集合list2
//用Set集合的好处就是这里可以去除list2中的重复元素,j<=i 是为了提高效率
int y = 0;
for (int i = 1; i < 67; i++) {
int m = 2 * i + 1;
for (int j = 1; j <= i; j++) {
int n = 2 * j + 1;
if ((y = m * n) > 101 && y < 200) {
list2.add(y);
}
}
}
//从list中去掉不是素数的数,剩下的就是想要的;
list.removeAll(list1);
list.removeAll(list2);
System.out.println(list.size());
System.out.println(list);
}
输出结果:
21
[137, 139, 131, 157, 149, 151, 173, 163, 167, 191, 179, 181, 197, 199, 193, 103, 101, 109, 107, 113, 127]
作者:
一大把手
时间:
2016-1-7 14:38
楼上写的太复杂了
class Test6
{
public static void main(String[]args)
{
//打印所有的三位质数,也就是大于等于100,小于200的数
for(int x=100;x<200;x++)
{
//用count计数
int count=0;
int temp =(x+2)/2;
//将x依次除以1到(x+2)/2
for (int y=1;y<temp;y++)
{
if((x%y)==0)
count++;
}
if(count<2)
System.out.println("质数="+x);
}
}
}
作者:
549208564
时间:
2016-1-7 14:56
可以得到101~200的素数,但没扩展性,性能很差
public static void main(String[] args) {
sqrt(101, 200);
}
public static void sqrt(int start,int end){
int cunte=0;
W: for(;start<=end;start++){
//创建一人标记
int cuntes=0;
//创建一个循环,用来作为除数
for(int x=2;x<20;x++){
if(start%x==0){
//当一个数被除零后就代表不是素数,跳出循环继续
continue W;
}else{
cuntes++;
//创建一个判断语句,只有每个数都除不尽,就是素数
if(cuntes==18){
System.out.println(start);
cunte++;
}
}
}
}
System.out.println(cunte);
}
作者:
542826323
时间:
2016-1-7 16:27
通向成功的道路有很多条,看你选哪一条了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2