首页 > 试题广场 >

筛选法求素数

[编程题]筛选法求素数
  • 热度指数:28739 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

输入描述:
多组输入,每行输入一个正整数(不大于100)。


输出描述:
针对每行输入的整数n,输出两行,第一行,输出n之内(包括n)的素数,用空格分隔,

第二行,输出数组中2之后被清0 的个数。每行输出后换行。
示例1

输入

20

输出

2 3 5 7 11 13 17 19
11
头像 西西西西西西西
发表于 2021-09-15 13:18:22
#include <stdio.h> int main() { int n = 0; int arr[100] = { 0 }; //多组输入 while (~scanf("%d", &n)) { // 展开全文
头像 Zerone·
发表于 2022-05-25 10:54:41
">int main() { int n; while (scanf("%d", &n) != EOF) { int m[n], count = 0, val = 0; for (int x = 2; x <= n; x++) { // 展开全文
头像 牛客575029355号
发表于 2022-04-22 18:12:38
#include<stdio.h> //小白第一次写,参考就好 int main() {     int arr[100] = {0};     int&nb 展开全文
头像 牛客171676524号
发表于 2021-10-03 12:04:26
这是一道很好的算法题。。。 1.涉及推导式生成数据列表 2.涉及列表元素的判断、列表元素的删除 3.涉及列表的解包输出、涉及删除元素个数的计算 n = int(input()) # 用推导式求出整个数组的列表 lines = [i for i in range(2,n+1)] # 循环遍历, 展开全文
头像 我不是匠人
发表于 2021-04-03 22:38:27
解题思路 埃托拉斯筛选法 快速求0的数量 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Sc 展开全文
头像 小白--cumt
发表于 2020-06-06 21:55:11
要去大胆的尝试,显然我这是蒙的~ #include<iostream> using namespace std; bool is_prime(int n) { for(int i=2;i<=n/i;i++) if(n%i==0) return false; 展开全文
头像 Portia356
发表于 2021-11-21 03:17:31
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); 展开全文
头像 Byte_Dancing
发表于 2022-01-24 21:38:39
#include<iostream> #include<algorithm> using namespace std; int main() { int n; while(cin >> n){ int delNum = 0; 展开全文
头像 战神牛牛收割offer
发表于 2024-01-06 21:20:16
#include<stdio.h> //筛选法 求 n 以内的素数 #define NUM 1000 int main() { int n = 0; //多组输入 while (~scanf("%d", &n))//~EOF = 0//为假 { i 展开全文
头像 牛客147897893号
发表于 2021-09-09 16:34:00
#include <stdio.h> int main() { int i,j,n,a[100]; int sum=0; //最后数组中0的个数 while(scanf("%d",& 展开全文