求前n个素数(C++)

输入一个输n,输出前n个素数。

 1 #include<iostream>
 2 #include <math.h>
 3 using namespace std;
 4
 5 class Sushu
 6 {
 7 public:
 8
 9     Sushu()
10     {
11         num = 2;
12     }
13
14     ~Sushu()
15     {
16     }
17
18     bool isSushu()
19     {
20         for (int i = 2; i <=sqrt(num); i++)
21         {
22             if (num%i == 0)
23                 return false;
24         }
25         return true;
26     }
27
28     int getSushu()
29     {
30         return num;
31     }
32
33     void printN_Sushu(int n)
34     {
35         int counter=0;
36         cout << endl;
37         while (counter<n)
38         {
39             if (isSushu())
40             {
41                 counter++;
42                 cout<<"第"<<counter<<"个素数是:"<<getSushu()<<endl;
43                 num++;
44             }
45             else
46             {
47                 num++;
48             }
49         }
50
51     }
52
53 private:
54     int num;
55 };
56
57 int main()
58 {
59     int n;
60     cout << "n的值为:";
61     cin >> n;
62
63     Sushu sushu;
64     sushu.printN_Sushu(n);
65
66     return 0;
67 }

运行结果如下图所示:

时间: 2024-10-11 23:20:01

求前n个素数(C++)的相关文章

怎么求前50个素数?

最近在看计算机博士的视频,有感 以前 我印象中for循环的循环条件只对于for的i,现在发现,原来还可以用其他条件.只能说长期这么使用造成思维懒惰了 下面放出代码 package d720; import static java.lang.System.out; /** * 7/20/2017 1:27 PM */ public class NewPrime2 { public static void main(String[] args) {// get previous fiftieth p

求100之内的素数

题目:求100之内的素数 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数. 1 package com.li.FiftyAlgorthm; 2 3 /** 4 * 题目:判断101-200之间有多少个素数,并输出所有素数. 5 * 程序分析:判断素数的方法:用一个数分别去除2得到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 6 * @author yejin 7 */ 8 public class Prime

利用数组求前n个质数

我的算法思想和实现方式都在代码和注释当中呢,这样的方式确实使算法复杂度降低一个等级,很好啊. #include <stdio.h> #include <time.h> /** * 利用数组求前n个质数 * 确定一个数m是否为质数,可以用已求出的质数对m * 的整除性来确定 */ //如果不知道质数的特性和想不到优化思路的方法 void getNPrimes_normal(); //优化之后的方法 void getNPrimes_optimize(); int main(void)

C语言学习笔记--求100-999之间的素数(用函数调用)

编写函数prime(n),如果n为素数,return 1,否则return 0.在main函数中调用函数prime(n),求100-999之间的素数 1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int prime(int i); 6 int i; 7 for(i=100;i<=999;i++) 8 { 9 prime(i); 10 if(prime(i)==1) 11 { 12 printf("

一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间

我曾经去一个公司面试,遇到这么一个题目:求1000以内的素数有多少个?用多线程实现,并给出消耗时间.我想了半天,没有想出多线程的解决方案.今天因为机缘到了,我浅谈下我的解法. 这道题,显然得考虑两个问题: 1.多线程的问题 2.算法性能问题 有人觉得1000以内还考虑什么算法性能?这肯定很快.但是话说回来,这个都有必要用多线程吗?如果我们求10000000以内的素数有多少个?是不是必须考虑以上两个问题了?多线程和算法优化的目的都是为了提高程序执行的效率.我们首先来考虑算法问题,什么是素数?素数:

求1-100内的素数(包括100)

public class PrimeNumber { // 求1-100内的素数(包括100) public static void main(String[] args) { int j = 0; System.out.println("输出1-100之间的素数"); for (int i = 2; i <= 100; i++) {// 1既不是苏数,也不是合数 if (i < 4) { System.out.println(i); continue;//注意此处有con

算法导论学习之线性时间求第k小元素+堆思想求前k大元素

对于曾经,假设要我求第k小元素.或者是求前k大元素,我可能会将元素先排序,然后就直接求出来了,可是如今有了更好的思路. 一.线性时间内求第k小元素 这个算法又是一个基于分治思想的算法. 其详细的分治思路例如以下: 1.分解:将A[p,r]分解成A[p,q-1]和A[q+1,r]两部分.使得A[p,q-1]都小于A[q],A[q+1,r]都不小于A[q]; 2.求解:假设A[q]恰好是第k小元素直接返回,假设第k小元素落在前半区间就到A[p,q-1]递归查找.否则到A[q+1,r]中递归查找. 3

Ruby、PHP与SHELL中求50之内的素数方法

求50之内的素数,ruby的代码如下: #encoding:utf-8 #求50以内的素数(注意数字中..与...的区别) for i in 2..50     f=true #起始假定每个数都是素数     for p in 2...i #比自身小的正整数(1和自身除外) if i%p==0 #如果能整除 f=!f #那么这个数不是素数 break #并且跳出这层循环         end # if 结束     end #内层循环结束     print i," " if f #

用筛选法求100以内的素数(数组)

用筛选法求100以内的素数,要求使用数组. #include "stdafx.h" #include<iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a[100],i,b[100],j,n=0;     //数组a[100]来放用于判断的数,数组b[100]来放素数 for(i=0;i<100;i++)       //注意这里i不能从1开始,因为数组a的首位是a[0]