多组输入,每行输入一个正整数(不大于100)。
针对每行输入的整数n,输出两行,第一行,输出n之内(包括n)的素数,用空格分隔,
第二行,输出数组中2之后0 的个数。每行输出后换行。
20
2 3 5 7 11 13 17 19 11
#include<bits/stdc++.h> using namespace std; int main() { int n; while(cin>>n) { vector<int> a; for(int i=0;i<=n;i++) a.push_back(0); for(int i=2;i<=n;i++) { if(a[i]==0) { for(int j=i*i;j<=n;j=j+i) { a[j]=1; } } } int sum=-1; for(int i=2;i<=n;i++) { if(a[i]==0) { cout<<i<<" "; sum++; } } int result=n-2-sum; cout<<endl; cout<<result<<endl; } return 0; }
n = int(input()) ss = list(range(2,n+1)) i = 2 while i<n: res = [] for j in range(len(ss)): if ss[j]<=i or (ss[j]>i and ss[j]%i != 0): res.append(ss[j]) i += 1 ss = tuple(res) res1 = "" for number in ss: res1 += str(number)+" " print(res1.strip()) print(n-1 - len(ss))减少重复判断
var line = readline(); while(line){ let numObj = new Array(parseInt(line)-1); let numList = numObj.fill(0).map((item, index) => index+2); let index = 0; while(index < numList.length){ let value = numList[index]; for(let i=index+1; i<numList.length; i++){ if(numList[i]%value===0){ numList.splice(i, 1); i -= 1; } } index ++; } print(numList.join(' ')); print(parseInt(line)-1-numList.length); line = readline(); }