首页 > 代码库 > 小算法笔记
小算法笔记
素数: 除 1 外只能被 1 和自身整除的数。
方法一:
#include <stdio.h>#define N 1000int num = 0;int prime(int n){ int i; if(n % 2 == 0) return (n == 2); if(n % 3 == 0) return (n == 3); if(n % 5 == 0) return (n == 5); for(i = 7; i*i <= n; ++i) if(n % i == 0) return 0; return 1;}void main(){ int i; for(i = 2; i < N; ++i) if(prime(i)) printf("%-4d %d\n", ++num, i);}
方法二(筛选法):
#include <stdio.h>#include <math.h>#include <time.h>#define N 1000bool tag[N+1] = {0};int num = 0;int prime(int n){ int i; if(n % 2 == 0) return (n == 2); if(n % 3 == 0) return (n == 3); if(n % 5 == 0) return (n == 5); for(i = 7; i*i <= n; i += 2) if(n % i == 0) return 0; return 1;}void main(){ clock_t tic; tic = clock(); int i, v, bound; bound = (int)sqrt((float)N); for(i = 2; i <= bound; ++i) { if(!prime(i)) tag[i] = 1; if(!tag[i]){ v = i + i; while(v <= N){ tag[v] = 1; v += i; } } } for(i = 2; i <= N; ++i) if(!tag[i]) printf("%-4d %d\n", ++num, i); printf("%d ms\n", clock()-tic);}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。