1 条题解

  • 0
    @ 2026-1-28 15:26:43
    #include <bits/stdc++.h>
    using namespace std;
    
    int arr[110]; // 存储所有输入的n值(n≤100,数组大小足够)
    
    int main(){
        int x = 0; // [1] 记录输入的有效n的个数(索引)
        int n;
        cin >> n; // 读取第一个输入值
        
        // [2] 循环读取输入,直到遇到0结束
        while(n != 0){
            arr[x] = n; // 将当前n存入数组
            x++; // 索引自增,准备存下一个n
            cin >> n;
        } 
        
        // [3] 遍历每个输入的n,计算1~n的素数个数
        for(int i = 0; i < x; i++){
            int sum = 0; // 记录当前n范围内的素数个数
            
            // [4] 检查2到arr[i]的每个数是否为素数
            for(int j = 2; j <= arr[i]; j++){ 
                int flag = 1; // 标记当前数j是否为素数(1=是,0=否)
                
                // [5] 试除法判断j是否为素数
                for(int k = 2; k < j; k++){
                    if(j % k == 0){ // 若能被整除,说明不是素数
                        flag = 0;
                        break; // 提前终止循环
                    }
                } 
                
                if(flag) sum++; // 如果是素数,计数+1
            }
            
            cout << sum << endl; // 输出当前n对应的素数个数
        } 
        
        return 0;
    }
    
    • 1

    信息

    ID
    1193
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者