cppの黑魔法-一行代码判断素数

luckyFang 2021年03月20日 253次浏览

优化

如果一个数是素数,那么它的最小质因数肯定小于等于他的平方根,所以结束条件设置为sqrt(x)可减少循环次数提高程序性能。

纯属娱乐

#include <iostream>
#include <tuple>
#include <cmath>

int main(){
    auto [is_prime,num]=[](int&& x){if(x==0||x==1) return std::make_tuple(false,x);for(auto i =2;i<=sqrt(x);++i){if(x%i==0) return std::make_tuple(false,x);}return std::make_tuple(true,x);}(97);
    std::cout<<"num:"<<num<<" is prime ?  "<<std::boolalpha<<is_prime;
    return 0;
}
num:97 is prime ?  true
num:10 is prime ?  false

特性门

  • 结构化绑定
  • lambda表达式
  • 右值引用
  • 元组
  • 输出控制