ZOJ-3024

来源:互联网 发布:淘宝信誉店铺出售 编辑:程序博客网 时间:2024/06/05 08:07

换一种方式的合数求素数因子,大神说用筛法,我直接把素数表打出来然后暴力枚举了,竟然也过了。。只不过时间很慢

#include<vector>#include<cstdio>using namespace std;namespace{vector<int> primes;void generate_prime(){primes.push_back(6);primes.push_back(8);int num;for (int n = 2; 7 * n + 1 <= 300000; n++)for (int i = 0; i < 2; i++){num = i ? 7 * n + 1 : 7 * n - 1;bool is_prime = true;for (size_t j = 0;j != primes.size() && primes[j] * primes[j] <= num&& is_prime; j++)if (num % primes[j] == 0)is_prime = false;if (is_prime)primes.push_back(num);}}}int main(){generate_prime();int n;while (scanf("%d", &n), n != 1){printf("%d:", n);for (size_t i = 0; i != primes.size(); i++)if (n % primes[i] == 0)printf(" %d", primes[i]);putchar('\n');}return 0;}


0 0
原创粉丝点击