输出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

题目描述

给出一个集合和一个数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;
}
View Code

 



以上是关于输出50到100所有质数的c语言编程的主要内容,如果未能解决你的问题,请参考以下文章

求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数

C语言 输出50-100间的所有素数,其中判断一个数是不是为素数用函数完成。

求1到100以内所有素数之和(c语言)

C语言程序(输入两个数 a b 求ab之间的质数并且输出所有质数之和)

用c语言求解 输出1-50以内的所有勾股数

用python编程输出50内能被3整除的所有正整数和它们的累加和?