【因数+哈希映射+筛法思想】HDU-1286 找新朋友

在这里插入图片描述
在这里插入图片描述

注解

1、利用筛法的思想找因数,速度更快,避免超时。

代码

#include <iostream>
#include <cstring>

using namespace std;

int main() {

    int CN;
    scanf("%d", &CN);
     
    for(int i=0; i<CN; i++){
        int n;
        scanf("%d", &n);
        int a[n];
        memset(a, 0, sizeof(a));
        for(int j=2; j<n; j++){
            if(n%j==0){
                for(int k=j; k<n; k+=j){
                    a[k] = 1;
                }
            }
        }
        int sum = 0;
        for(int j=0; j<n; j++){
            if(a[j]){
                sum++;
            }
        }
        sum = n-1 - sum;
        cout<<sum<<endl;
    }
    
    return 0;
}

结果

在这里插入图片描述

发布了475 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhanggirlzhangboy/article/details/103748700