判断101-200之间有多少个素数,并输出所有素数。
#include <iostream>
#include <cmath>
using namespace std;
void isprime (int sta,int en)
{
int cnt=0;
int j;
for(int i=sta;i<= en;i++)
{
for(j=2;j<=sqrt(i*1.0);j++)
{
if(i%j==0)
break;
}
if(j==(int)sqrt(i*1.0)+1)
{
cnt++;
cout<<i<<endl;
}
}
cout <<cnt<<endl;
}
int main()
{
int sta,en;
while(cin>>sta>>en)
isprime (sta,en);
return 0;
} public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a, b;
while (true) {
System.out.println("请输入第一个整数a:");
a = scanner.nextInt();
System.out.println("请输入第二个整数b(b>a):");
b = scanner.nextInt();
if (b <= a) {
System.out.println("你输入的数不符合要求,请重新输入:");
continue;
}
break;
}
List<Integer> integerList = printAllPrimeNumber(a, b);
System.out.println(a + "和" + b + "之间有" + integerList.size() + "个素数,分别为:" );
System.out.println(integerList.toString());
}
private static List<Integer> printAllPrimeNumber(int a, int b) {
List<Integer> list = new ArrayList<>();
for (int i = a; i <= b; i++) {
int temp=0;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
temp=0;
break;
}
temp=i;
}
if (temp!=0) {
list.add(temp);
}
if (i==2){
list.add(i);
}
}
return list;
} //求10000000以内素数:素数筛选法
public class prime {
public static void main(String[] args) {
int N=100000000; boolean[] result = new boolean[N];
for (int i = 1; i <= result.length; i++) {
if(i%2==0) result[i-1] = false;//偶数全部是素数
else result[i-1] = true;//奇数不能确定,先算为素数
}
for (int i = 3; i <= Math.sqrt(N); i+=2) {//这个for循环意思是,如果一个数为素数,那么它的倍数都不是素数,从3开始判断
if (result[i-1]==true) {
for (int j = i+i*2; j <= result.length; j=j+i*2) {
result[j-1] = false;//以3为例,此时9,15,21,27,33....都被设为false
}
}
}
for (int i = 0; i < result.length; i++) {
if (result[i]==true)
System.out.println(i+1);
}
}
} # 使用python 列表推导式,两行代码。 s = [p for p in range(101,201) if 0 not in [p % d for d in range(2, int(p**0.5)+1)]] print(len(s),s) # 结果 21 [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]