关于c语言找质数,用c语言求质数

发布时间:2022-11-25

本文目录一览:

1、请把你们所知道的C语言中找质数的算法都编出来告诉我,拜托了! 2、关于C语言找质数 3、c语言找质数的问题 4、用C语言编写求质数的程序 5、如何用穷举法在1—100之间找出所有的质数用C语言编程实现 6、用C语言找出2—100的以内所有的质数。

请把你们所知道的C语言中找质数的算法都编出来告诉我,拜托了!

//以前朋友写的一段C的,效率很高,我自己写的不及他 //Problem: Prime Ring Problem //00:00.71 436K //戴帽子的 2004-04-22 //=============================

#include iostream
#include ctime
#include fstream
using namespace std;
/*
#define cout out
ofstream fout("time.txt");
ofstream fin("hziee.txt");
ostream out = fin;
ostream timeout = fout;
*/
ofstream fin("hziee.txt");
int kase;
bool P[21][21];
short in[21];
short result[20];
short N;
bool Prime(int n)
{
    int i;
    for(i=2; in; i++) {
        if(n%i==0)
            return false;
    }
    return true;
}
void initial()
{
    int i,j;
    kase = 0;
    for(i=1; i21; i++){
        for(j=i; j21; j++) {
            P[i][j] = Prime(i+j);
            P[j][i] = P[i][j];
        }
    }
}
void Print()
{
    int i;
    for(i=0; iN-1; i++)
        finresult[i]" ";
    finresult[i]endl;
}
void hziee(int k)
{
    int i;
    if(k == N){
        if(P[result[0]][result[N-1]])
            Print();
        return;
    }
    for(i=result[k-1]%2 + 1; i=N; i += 2) {
        if(in[i])
            continue;
        if(P[result[k-1]][i]) {
            result[k] = i;
            in[i] = true;
            hziee(k+1);
            in[i] = false;
        }
    }
}
int main()
{
    int i;
    clock_t start, end, start1, end1;
    start = clock();
    initial();
    end = clock();
    cout double(end - start) / CLK_TCK endl;
    in[1]=true;
    result[0]=1;
    cinN;
    start1 = clock();
    fin"Case "++kase":"endl;
    for(i=2; i=N; i++)
        in[i] = false;
    if(N%2 == 0)
        hziee(1);
    finendl;
    end1 = clock();
    fin double(end1 - start1) / CLK_TCK endl;
    return 0;
}

关于C语言找质数

#include stdio.h
#include math.h
void main()
{
    int i, j, n, l, m = 0;
    printf("你需要小于多少的质数:\t");
    scanf("%d", n);
    for(i = 2; i < n; i++)
    {
        l = 1;
        for(j = 2; j <= sqrt((double)i); j++)
        {
            if(i % j == 0){l = 0; break;}
        }
        if(l == 1){
            printf("%d ", i);
            m++;
        }
    }
    printf("一共有%d个这样的树", m);
}

c语言找质数的问题

明白了你的思路 可是按你的思路 你自己的算法有问题 我改了下你可以参考下 算法不是唯一的,你可以看看其他的算法 会比这个简单:) 从for循环开始改的

for(i=2;i<=limit;i++)
{
    while((j=i))
    {
        if(i%j == 0)//要用if 不然算法不对
        {
            sum = sum + j;
        }
        j=j+1;//要在这里,可以确保不进入死循环
    }
    if (sum==i)
    {
        printf("Sum of divisors for %d is %d\n", i, sum);
    }
    sum=0;//sum要清零
    j=2;//j要清零
}
return 0;//应该返回个值 你定义的是int main()
}

用C语言编写求质数的程序

//我分别写出了求素数和判断素数的程序

//判断一个数是否为素数
#include stdio.h
#include math.h
int isprime(int);
void main()
{
    int inumber;
    printf("请输入一个非负整数: ");
    scanf("%d",&inumber);
    if(isprime(inumber))
        printf("%d是素数!\n",inumber);
    else
        printf("%d不是素数!\n",inumber);
}
int isprime(int a)
{
    int i;
    for(i=2;i<=sqrt(a);i++)
        if(a%i==0)
            return 0;
    return 1;
}

/*****************************************************/ //求某个正整数以内的素数

#include "stdio.h"
#include "math.h"
int main(void)
{
    int count,i,m,n,num;
    printf("请输入所求范围(正整数): ");
    scanf("%d",&num);
    count=0;//count记录素数的个数
    printf("%d以内的素数为:\n",num);
    for(m=2;m<=num;m++)
    {
        n=sqrt(m);
        for(i=2;i<=n;i++)
        {
            if(m%i==0)
                break;
        }
        if(i>n)//如果m是素数
        {
            printf("%6d",m);
            count++;
            if(count%10==0)//count为10的倍数时换行
                printf("\n");
        }
    }
    printf("\n");
    return 0;
}

如何用穷举法在1—100之间找出所有的质数用C语言编程实现

对1-100的所有数进行遍历,逐一判断每个数是否为素数。 判断素数的算法有很多,比较基础的是逐一求余,如果除了1和本身外,还有其它数可以整除那么就不是素数。 代码如下:

#include stdio.h
int main()
{
    int i, j;
    for(i = 2; i < 100; i ++)
    {
        for(j = 2; j < i; j ++)
        {
            if(i%j==0) break; //可以整除, 退出循环。代表不是素数。
        }
        if(j == i) //没有提前退出循环,代表是素数,打印。
            printf("%d,", i); //打印i值。
    }
    return 0;
}

用C语言找出2—100的以内所有的质数。

使用循环结构,除了2以外的偶数直接排除掉,因为不可能是质数,for(i=3;i<=100;i=i+2){for(m=2;m<=i;m++)下面的就自己进行判断吧,用i求余m,如果余数为0就说明不是,其余的自己想吧,编程这个东西还是要靠自己