解题思路:
使用的是算数基本定理,一个数只能被唯一分解成多个质数的乘积,这样不需要构造质数表了。
最好情况下在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语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:439 |
【绝对值排序】 (C++代码)浏览:672 |
打水问题 (C语言代码)浏览:1072 |
校门外的树 (C语言代码)浏览:961 |
C语言训练-求函数值 (C语言代码)浏览:580 |
WU-输入输出格式练习 (C++代码)浏览:1082 |
剪刀石头布 (C语言代码)浏览:753 |
【矩阵】 (C++代码)浏览:950 |
A+B for Input-Output Practice (V) (C语言代码)浏览:470 |
矩形面积交 (C++代码)浏览:1130 |