题解 | 几乎是质数

几乎是质数

https://www.nowcoder.com/practice/bbcb0e0f5aad46f4920ee85c3ed5d34b

#include<bits/stdc++.h>
using namespace std;

using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;

void solve()
{
	int n,cnt=0;//可以找出每一个数有几个质因数 方法如下 可以使用set记录个数 超过2就直接break
	cin >> n;//不过这样很慢 建议去学一下筛法
	for(int i=2;i<=n;i++)
	{
		set<int>s;
		int temp=i;
		for(int j=2;j*j<=i;j++)
		{
			if(temp%j==0) s.insert(j);
			while(temp%j==0)
			{
				temp/=j;
			}
			if(s.size()>2) break; 
		}
		if((s.size()==2&&temp==1)||(s.size()==1&&temp>1)) cnt++;
	}
	cout << cnt;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t=1;
	//cin >> t;
	
	while(t--)
	{
		solve();
	}
	return 0;
}

全部评论

相关推荐

01-22 14:36
门头沟学院 Java
不知道怎么取名字_:我就好奇,你是这家的hr还是?咋这都能搞到
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务