判断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]