输出50到100所有质数的c语言编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出50到100所有质数的c语言编程相关的知识,希望对你有一定的参考价值。
/****程序说明:质数也叫素数。
*/
#include <stdio.h>
#include <math.h>
//判断整数是否为素数
int isPrime(int n)
int i;
for(i=2;i<=(int)sqrt(n);i++) //遍历从2~n的平方根向下取整
if(n%i == 0) //如果有i能被n整除,则n不是素数,返回0,否则返回1
return 0;
return 1;
//求某一范围内的所有素数
void qiuPrimeNumber(int start,int end)
int i,j,count;
for(i=start,count=0;i<=end;i++)
if(isPrime(i)) //调用素数判断函数
printf("%-4d",i);
count++;
if(count % 10 == 0) //输出10个素数则输出一个换行
printf("\\n");
count=0;
int main()
printf("50~100之间的所有质数为:\\n");
qiuPrimeNumber(50,100); //调用函数求出50~100内的所有质数
return 0;
参考技术A #include <stdio.h>
bool is_prime(int n)
if(n<2)
return false;
for (int i=2;i*i<=n;i++)
if(n % i == 0)
return false;
return true;
int main()
for (int i = 50; i <= 100; i++)
// 如果是质数,则打印
if (is_prime(i))
printf("%d ", i);
return 0;
参考技术B /**
**程序说明:质数也叫素数。
*/
#include <stdio.h>
#include <math.h>
//判断整数是否为素数
int isPrime(int n)
int i;
for(i=2;i<=(int)sqrt(n);i++) //遍历从2~n的平方根向下取整
if(n%i == 0) //如果有i能被n整除,则n不是素数,返回0,否则返回1
return 0;
return 1;
//求某一范围内的所有素数
void qiuPrimeNumber(int start,int end)
int i,j,count;
for(i=start,count=0;i<=end;i++)
if(isPrime(i)) //调用素数判断函数
printf("%-4d",i);
count++;
if(count % 10 == 0) //输出10个素数则输出一个换行
printf("\\n");
count=0;
int main()
printf("50~100之间的所有质数为:\\n");
qiuPrimeNumber(50,100); //调用函数求出50~100内的所有质数
return 0;
参考技术C /**
**程序说明:质数也叫素数。
*/
#include <stdio.h>
#include <math.h>
//判断整数是否为素数
int isPrime(int n)
int i;
for(i=2;i<=(int)sqrt(n);i++) //遍历从2~n的平方根向下取整
if(n%i == 0) //如果有i能被n整除,则n不是素数,返回0,否则返回1
return 0;
return 1;
//求某一范围内的所有素数
void qiuPrimeNumber(int start,int end)
int i,j,count;
for(i=start,count=0;i<=end;i++)
if(isPrime(i)) //调用素数判断函数
printf("%-4d",i);
count++;
if(count % 10 == 0) //输出10个素数则输出一个换行
printf("\\n");
count=0;
int main()
printf("50~100之间的所有质数为:\\n");
qiuPrimeNumber(50,100); //调用函数求出50~100内的所有质数
return 0;
参考技术D int prime(int n)//素数除了1和它本身不能被其他数整除
assert(n > 0);
int i = 0;
for (i = 2; i <= sqrt(n); i++)
if (n%i == 0)
return 0;
return 1;
int main()
int i = 0;
int count = 0;
printf("1-100之间的素数从小大为;\\n");
for (i = 50; i < 100; i++) //依次判断是否为素数
if (prime(i))
count++; //统计素数的个数
printf("%d\\t", i);
printf("\\n一共有%d个\\n", count);
system("pause");
return 0;
E.集合中的质数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给出一个集合和一个数m。
集合里面有n个质数。
请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。
输入描述:
第一行两个正整数 n 和 m 。
第二行n个正整数,分别为集合中的质数。
输出描述:∑
输出一个整数,表示符合要求的正整数的个数。
示例1
输入
3 37 5 7 13
输出
13
备注:
对于100%的数据,有n<=20,m为有符号64位正整数,集合内质数<=1000000000
分析:容斥原理。想起了概率论加法公式的推广:
#include <cstdio> #include <algorithm> using namespace std; long long ans,N,M,a[30]; void dfs(int k,int sum,long long cur) { if(k==N) return; if(a[k]<=M/cur) { ans=ans+sum*M/(cur*a[k]); dfs(k+1,sum,cur); dfs(k+1,-sum,cur*a[k]); } else return; } int main() { scanf("%lld%lld",&N,&M); for(int i=0;i<N;i++) scanf("%lld",&a[i]); sort(a,a+N); dfs(0,1,1); printf("%lld",ans); return 0; }
以上是关于输出50到100所有质数的c语言编程的主要内容,如果未能解决你的问题,请参考以下文章
求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数
C语言 输出50-100间的所有素数,其中判断一个数是不是为素数用函数完成。