用java定义一个长度为164的int数组primes,求出11-999以内的质数,依次把所求的质数存储为primes元素,然后按primes[i]=value的格式输出数组的每个元素
时间: 2023-05-11 11:04:44 浏览: 64
以下是Java代码:
```
int[] primes = new int[164];
int count = 0;
for (int i = 11; i <= 999; i++) {
boolean isPrime = true;
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primes[count] = i;
count++;
}
}
for (int i = 0; i < primes.length; i++) {
System.out.println("primes[" + i + "]=" + primes[i]);
}
```
这段代码定义了一个长度为164的int数组primes,然后使用两个for循环遍历11-999之间的所有数字,判断每个数字是否为质数,如果是质数,则将其存储到primes数组中,并将计数器count加1。最后,使用一个for循环按照primes[i]=value的格式输出数组的每个元素。
相关问题
java设置一个长度为20的数组,存放从2开始的质数并输出
好的,这是一个简单的Java代码示例,可将从2开始的前20个素数存储在数组中并输出:
```java
public class PrimeNumbers {
public static void main(String[] args) {
int[] primes = new int[20];
int count = 0;
int number = 2;
while (count < 20) {
boolean isPrime = true;
for (int i = 2; i < number; i++) {
if (number % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
primes[count] = number;
count++;
}
number++;
}
for (int i = 0; i < primes.length; i++) {
System.out.print(primes[i] + " ");
}
}
}
```
希望能够帮到你。
请用C++代码筛出2~1e7中所以质数(线性,并且用一个1e7的数组记录每个数字是否为质数)
以下是使用线性筛法的C++代码,时间复杂度为O(n):
```cpp
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 10000000;
bool is_prime[MAXN + 1];
int primes[MAXN + 1], prime_cnt;
void sieve() {
memset(is_prime, true, sizeof(is_prime));
is_prime[0] = is_prime[1] = false;
for (int i = 2; i <= MAXN; i++) {
if (is_prime[i]) primes[++prime_cnt] = i;
for (int j = 1; j <= prime_cnt && i * primes[j] <= MAXN; j++) {
is_prime[i * primes[j]] = false;
if (i % primes[j] == 0) break;
}
}
}
int main() {
sieve();
// 输出所有质数
for (int i = 2; i <= MAXN; i++) {
if (is_prime[i]) cout << i << " ";
}
return 0;
}
```
其中,is_prime数组记录每个数字是否为质数,primes数组记录筛出的所有质数,prime_cnt记录质数的个数。
在sieve函数中,首先将is_prime数组全部初始化为true,然后从2开始枚举每个数,如果这个数是质数,则将其加入primes数组中,并且将其倍数标记为非质数。具体地,对于第i个质数primes[j],从i * primes[j]开始,将其标记为非质数,如果i是primes[j]的倍数,则退出循环。
最后,在主函数中输出所有质数。