C++ 求1到100所有质数共有几个
//两种方法:1、暴力;2、筛选法求素数。
//第一种:暴力法,用循环从100到200的每个数判断一下,是素数就输出。
#include
#include
using namespace std;
bool prime(int num)
{
int max=(int)sqrt((double)num),i;
for(i=2;i<=max&&num%i;i++);
if(i>max) return 1;
else return 0;
}
int main()
{
int i;
for(i=100;i<=200&&prime(i)==0;i++);
cout<<i;
for(i++;i<=200;i++)
if(prime(i)) cout<<" "<<i;
cout<<endl;
return 0;
}
//第二种:筛选法求素数,原理:素数的倍数一定不是素数。从2开始,把它的倍数都去掉
#include
#include
#define max 200
using namespace std;
bool prime[max+1];
int main()
{
int mid=(int)sqrt((double)max);
prime[0]=prime[1]=1;
for(int i=2;i<=mid;i++)
for(int j=i+i;j<=max;j+=i)
prime[j]=1;
int i;
for(i=100;i<=200&&prime[i];i++);
cout<<i;
for(i++;i<=200;i++)
if(prime[i]==0) cout<<" "<<i;
cout<<endl;
return 0;
}
100以内的质数有2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
首先了解下什么是质数:
质数(prime number)又称素数,有无限个。
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
了解质数后, 我们就可以根据其特点进行编程开发了。
下面直接上程序:
int main()
{
int i;
int iCount = 0; //质数的个数
for(i=2;i<=100;i++)
{
int k=0;
for(int j=2;j<i;j++)
{
if(i%j==0)
{
k++;
break;
}
}
if(k==0)
{
cout << i << " ";
++iCount;
}
}
cout << "
1 - 100 中共有质数 = " << iCount << endl;
return 0;
}
#include<iostream>
using namespace std
#define N 100
void main() { int i,j,b,n;
n=0;
for ( i=1;i<N;i++ ) {
b=1; for ( j=2;j<=i/2;j++ ) if ( i%j==0 ) { b=0;break; }
if ( b ) n++;
}
cout<<n<<endl;
}
#include<cstdio>
int main()
{
int a=1,b,x,z=0,i=0;
for(x=2;x<=100;x++)
{
a=1;
for(b=2;b<x;b++)
{
if(x%b==0)
{
a=0;
continue;
}
}
if(a==1)
{
i++;
}
}
printf("%d",i);
return 0;
}
系轮感冒: 首先了解下什么是质数:质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数.了解质数后, 我们就可以根据其特点进行编程开发了.下面直接上程序:int main() { int i; int iCount = ...
辽中县13510944348: 用c++的continue求出1到100所有的质数 - ?
系轮感冒: for(int i=2;i{ int j; for(j=i-1;j>=2;j--) {if(i%j!=0) continue; else break; } if(j==1) cout}
辽中县13510944348: 用C++编写求1到100的素数(质数)的程序 - ?
系轮感冒: 不知道你是怎么想的; 大脑那么简单,还想同时做多样事情, 1,每一次循环时,a[i+1]根本还没初始化到,只初始化了a[i],你却想在初始化前面一个元素的时候就判断后面一个没初始化的数是不是质数 2,按你的注释想法,检查那个元素是不是质数应该用2到他本身的所有整数进行测试可是,好像你有想用所有小于它的质数测试(但也不是那样写的) 一句话,要脚踏实地!!! 你可以看看答案,然后关闭答案写一遍,会了在想其他方法
辽中县13510944348: C++程序设计:怎样求1到100之间的素数. - ?
系轮感冒: #includeint main() { int n1,nm,i,j,flag,count=0; do{ printf("Input START and END=?"); scanf("%d%d",&n1,&nm); /*输入求素数的范围*/ }while(!(n1>0&&n1
辽中县13510944348: C++ 枚举寻找1到100的质数 - ?
系轮感冒: #include using namespace std; int main() { int i,k; int m=0; for(i = 2; i for(k = 2;k if(i%k ==0) m++;}if(m==0) coutelse m=0; } return 0; }
辽中县13510944348: 求大神帮我用c++编写一个程序,用来输出1到100的素数 - ?
系轮感冒: #include<iostream> using namespace std; int main() {cout << "1-100素数为:" << endl;for (int i = 2; i <= 100; i++) {int flag = 1;for (int j = 2; j < i; j++)if (i % j == 0) {flag = 0;break;}if (flag)printf("%d \n", i);}return 0; }
辽中县13510944348: C++设计一个函数,输出1到100之间所有素数 - ?
系轮感冒: #include using namespace std; #include #define N 100 int fun(int n)//判断n是否为素数,是则返回1,否则返回0 { int i=2; if (n<2)return 0; while(i<=sqrt(n))if(n%i++==0)return 0; return 1; } void main() { int num=0; for (int m=1;m<=N;m++) if(fun(m)) { printf("%5d",m); if (++num%5==0)printf("\n");//每输出5个素数输出一个换行 } }
辽中县13510944348: 用C++编写程序求100以内的所有素数(质素)的和. - ?
系轮感冒: int n=100; for(int i=2;i
辽中县13510944348: 用VC++输出1到100中的素数?
系轮感冒: 数组越界了 你定义的a[100],下标值最大只能达到a[99] 但是你的for循环中显然要到a[100] 所以在开头宏定义时#define N 101 就可以了
辽中县13510944348: 编写一个C程序,计算出1到100之间所有素数的和 - ?
系轮感冒: //输出1到100的所有素数#include <iostream> using namespace std; class CStu { CStu() { } }; int main() { int i, j, t; t = 1; for (i = 2; i < 101; i++) //遍历1-100间的所有数 { for (j = 2; j*j <= i; j++) //考查这些数是否有1和自身以外的因子 { if (i % j == 0) ...