附代码:
#include<stdio.h>
#include<math.h>
int main()//原理:设ab=c,a<b,则有a<根号c<b。若设a恒小于根号c,则只需判断a是否为因数
{
int a, b;
printf("请按从小到大输入两个素数:");
scanf_s("%d %d", &a, &b);
int n = 0,m=0,sum = 0;
double i, j;//i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数
for (i = a; i <= b; i++)
{
m = 0;
int c = int(pow(i, 0.5));
for (j = 2; j <= c; j++)
{
if ((i / j - int(i / j)) == 0.0)
{
m++;//m是i被从2到根号i的j除了之后,商为整数,即发现j是i的因数的次数
}
}
if (m==0)
{
printf("找到素数:%d\n", int(i));
n++;
sum = sum + i;
}
}
printf("大于等于%d,小于等于%d的素数的个数为:%d\n", a, b, n);
printf("它们的和为:%d", sum);
return 0;
}
素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数。
#include<stdio.h>#include<math.h>void main(){ int m, k, i, n=0; for(m=1; m <= 200; m=m+2) { k = sqrt(m); for(i=2; i <= k; i++) if(m % i == 0) break; if(i >= k + 1) { printf("%5d",m); n = n + 1;素数
所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数
另外判断方法还可以简化。m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。如果m不能被2~√m间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。(原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。例如16能被2,4,8整除,16=2*8,2小于4,8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可)
void main()
{
int a,b;
int i,n;
int flag=1;
printf("请输入上限:");
scanf("%d",&a);
printf("请输入下限:");
scanf("%d",&b);
printf("%d到%d之间的素数为:",a,b);
for (i=a;i<=b;i++) {
flag=1;
for (n=2;n<i;n++) {
if (i%n==0) {
flag=0;
}
}
if ((flag==1)&&(i!=1)) {
printf("(%d)",i);
}
}
}
#include "iostream"
using namespace std;
bool isPrimeNum(int x)//该函数用来判断一个数是否是素数
{
int n=0;
for(int i=1;i<=x;i++)
{
if(x%i==0)
{
n++;
}
}
if(n==2)
{
return 1;
}
return 0;
}
int main()
{
int m,n,y;
cout<<"请输入数字m"<<endl;
cin>>m;
cout<<"请输入数字n"<<endl;
cin>>n;
if(m<n)//用来将大数赋值给m
{
y=m;
m=n;
n=y;
}
for(;n<=m;n++)
{
if(isPrimeNum(n))
{
cout<<n<<" ";
}
}
int p;//这两句是为了防止程序一闪而过
cin>>p;
return 0;
}
###################################################
改成C版,头文件没加:
bool isPrimeNum(int x)//该函数用来判断一个数是否是素数
{
int n=0;
for(int i=1;i<=x;i++)
{
if(x%i==0)
{
n++;
}
}
if(n==2)
{
return 1;
}
return 0;
}
int main()
{
int m,n,y;
printf("请输入数字m\n");
scanf("%d",&m);
printf("请输入数字n\n");
scanf("%d",&n);
if(m<n)//用来将大数赋值给m
{
y=m;
m=n;
n=y;
}
for(;n<=m;n++)
{
if(isPrimeNum(n))
{
printf("%d ",n);
}
}
int p;
scanf("%d",p);
return 0;
}
只能按照定义去遍历。
main()
{
int Up,Down,Judge,i,j;
printf("输入上限,正整数:");
scanf("%d",&Up);
printf("输入下限,正整数:");
scanf("%d",&Down);
if Up<Down
Judge=Up,Up=Down,Down=Judge;
prinrf("素数有:");
for(i=Down;i<=Up;i++)
{
Judge=1;
for(j=2;j<=i-1;j++)
if(i%j==0)
{
Judge=0;
break;
}
if(Judge==1)
printf("%d ",i);
}
}