解题思路:以根号n为界缩小时间复杂度
注意事项:对自身进行判断
#include<iostream> #include<cmath> using namespace std; typedef long long ll; int is_z(ll n){//判断n是否是一个质数(是返回1,否则返回0) for(int i=2;i<=std::sqrt(n);i++){ if(n%i==0) return 0; } return 1; } int main() { int sum=0; ll n; cin>>n; for(int i=2;i<=std::sqrt(n);i++){ if(n%i==0){//(i是n的约数) if(is_z(i)) sum++;//(i是n的约数,且i是质数) if(is_z(n/i)&&(n/i)!=i) {//(判断另一个约数n/i是不是质数) sum++; } } } if(is_z(n)) {//(因为判断是从2开始,没有判断自身情况,在此补充) sum++; } cout<<sum; return 0; }
0.0分
4 人评分
震宇大神的杀毒软件 (C++代码)浏览:1114 |
简单编码 (C++代码)浏览:675 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:742 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:559 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:505 |
【蟠桃记】 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:575 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:703 |
Cylinder (C语言描述,蓝桥杯)浏览:1247 |
A+B for Input-Output Practice (V) (C语言代码)浏览:459 |