2013谷歌笔试题
个人信息:就读于燕大本科软件工程专业 目前大四;
本人博客:google搜索“cqs_2012”即可;
个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;
编程语言:C++ ;
编程坏境:Windows 7 专业版 x64;
编程工具:vs2010;
制图工具:office 2010 powerpoint;
硬件信息:7G-3 笔记本;
题目
写函数,输出前N个素数。不需要考虑整数溢出问题,也不需要使用大数处理算法。
思路
个人思路对每个奇数去检验是否是素数,检验方法就是把当前值与之前求出所有的素数求最大公约数,若最大公约数其中存在不等于1的,则
此数不是素数,否则是素数。
代码
#include "iostream" using namespace std; void show_n(long n); long gcd(long x,long y); int main() { long n = 100; show_n(n); system("pause"); } long gcd(long x,long y) { if( y == 0 ) return 0; else { if( x%y == 0) return y; else return gcd(y,x%y); } } void show_n(long n) { if(n == 0) cout<<"error"<<endl; else if(n==1) cout<<2<<endl; else { long* data = new long[n]; long num; bool ok ; data[0] = 2; data[1] = 3; for(int i=1;i<n-1;i++) { num = data[i]; ok = false; while( ok == false ) { num += 2; ok = true; for(int j=0 ;j<=i;j++) { if(gcd(num,data[j]) != 1) { ok = false; break; } } } data[i+1] = num; } for(int i=0;i<n;i++) { cout<<data[i]<<"\t"; } } }
原文地址:http://blog.csdn.net/cqs_experiment/article/details/38589443