解题思路:
使用的是算数基本定理,一个数只能被唯一分解成多个质数的乘积,这样不需要构造质数表了。
最好情况下在log n的时间复杂度,用k表示分解出了几个质数,如果k!=2的话就打印no
参考代码:
#include <stdio.h> #include <math.h> int main () { int i,k=0; int n,z=0; scanf("%d",&z); while(z--){ scanf("%d",&n); for(i=2;i<=n;i++){ while(n%i==0){ n/=i; k++; } } if(k!=2){ printf("No\n"); }else{ printf("Yes\n"); } k=0; } return 0; }
0.0分
157 人评分
数列排序 (C语言代码)浏览:828 |
【蟠桃记】 (C语言代码)浏览:648 |
printf基础练习2 (C语言代码)浏览:942 |
C语言训练-大、小写问题 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:625 |
数字游戏 (C++代码)浏览:1180 |
陶陶摘苹果2 (C语言代码)浏览:597 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:467 |
简单的a+b (C语言代码)浏览:506 |
数列有序 (C语言代码)浏览:931 |