2 条题解
- 
  1Infinity_ LV 8 @ 2024-06-08 11:59:37 #include<iostream> #include<cmath> using namespace std; bool b[100001]; bool isprime(int i){ for(int j = 3; j <= sqrt(i); j++){ if(i % j == 0)return false; } return true; } int main(){ ios::sync_with_stdio(false); for(int i = 1; i <= 100001; i++)b[i] = false; int n, k; cin >> n >> k; for(int j = 2; j <= n; j += 2)b[j] = !b[j]; for(int i = 3; i <= k; i += 2){ if(isprime(i)){ for(int j = i; j <= n; j += i)b[j] = !b[j]; } } for(int i = 1; i <= n; i++){ if(b[i])cout << i << " "; } return 0; }可能用数论也能解决,但我数论太辣鸡了(我在讨论里发了) 
- 
  1@ 2021-12-03 19:41:16#include<iostream> 
 using namespace std;
 int is_prime(int n)
 {
 for (int i = 2; i < n; i++)
 {
 if (n%i == 0)
 {
 return 0;
 break;
 }
 }
 return 1;
 }
 int main()
 {
 int number_class;
 int k;
 int t;
 int a[100000];
 for (int x = 0; x < 100000; x++)
 {
 a[x] = 1;
 }
 cin >> number_class>>k;
 for (int i = 2; i <= k; i++)
 {
 if (is_prime(i))
 {
 for (int j = 1; j <= number_class; j++)
 {
 if (0==j%i)
 {
 t = -a[j];
 a[j] = t;
 }
 }
 }
 }
 for (int l = 1; l <= number_class; l++)
 {
 if (a[l] == -1)
 {
 cout << l;
 cout << " ";
 }
 }
 return 0;
 }
- 1