c语言怎么求素数?

c语言怎么求素数?,第1张

除2以外,素数皆为奇数,所以对2单独处理,从3开始,将100以内的奇数逐一进行素数考察,是则输出,不是则跳过。另设一计数变量控制换行,每输出5个素数添加一个回车。代码如下:

#include "stdioh"

int main(int argc,char argv[]){

int i,n,t;

pr

#include

#include

main()

{

int a,i,flag,count=0;

for(a=1;a <=100;a++)

{

flag=0;

for(i=2;i

#include int main()

{

int i,n,k,b;

for(i=1,b=1;i<=100;i++)

{

for(n=2;n {

k=i%n;

if(k==0)

break;

}

扩展资料:


C语言注意事项:

1、预编译命令不是语言语句,不使用分号,不占用运行时间。

2、在IDE中通常包括编辑器,编译器,汇编器和链接器,在这个过程中是语言等级逐级降低的过程,从最高级的c语言到中级语言汇编语言再到低级语言机器语言,编辑器生成文件为c文件,编译器生成的文件为obj汇编器生成的文件为0文件,链接器生成的是exe文件。

3、注意 return和exit的区别, return是让本函数运行结束,而exit是让本程序运行结束。

4、在指针定义时,一定要进行初始化,否则就会出现意想不到的错误,如果不能找到对应地址赋值,那就赋给NULL(注意大写)。

5、gets可以 scanf办成办不成的事,就是可以接受空格,puts在最后会输出一个换行。

#include <stdioh>
int main(){
int a=0; // 素数的个数
int num=0; // 输入的整数
printf("输入一个整数:");
scanf("%d",&num);
for(int i=2;i<num;i++){
if(num%i==0){
a++; // 素数个数加1
}
}
if(a==0){
printf("%d是素数。\n", num);
}else{
printf("%d不是素数。\n", num);
}
return 0;
}

#include<stdioh>
int main()
{
int i,j;
for(i=2;i<=10;i++)
{
for(j=2;j<i;j++)
{
if(0==i%j)
{
break;
}
}
if(j>=i)
{
printf("%d ",i);
}
}
return 0;
}

#include <stdioh>
#include <mathh>
//判断是否为素数的函数
int isPrime(int n)
{
    int i=2;
    while(i<=(int)sqrt(n))
    {
        if(n%i == 0)
            return 0;  //不是素数,直接返回0
        else
            i++;
    }
    return 1;
}
int main()
{
    int n,i;
    printf("输入一个正整数: ");
    scanf("%d",&n);
    for(i=2;i<=n;i++)
{
if(isPrime(i))  //调用函数,如果该数为素数,则输出
printf("%d ",i);
}
printf("\n");
    return 0;
}

示例运行结果:

输入一个正整数: 50

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

先编写一个判断素数的函数,类型为bool型
bool Isprime(int number)
{
for (int i = 2; i < number; i++)
if (number mod i != 0)
return false;
return true;
}
上面的代码还可以继续优化,只是给你提供个思路
然后在主函数里面循环调用这个函数 比如数组num[N] 循环N次,将num[i] 作为参数调用上面的函数,然后看返回值,如果未true 素数的个数+1,就可以了

方法有2个:

1、判断n是否能被2~√n间的整数整除

#include<stdioh>

#include<mathh>

int main()

{

int n,i;

double k;

scanf("%d", &n);

k = sqrt(n);

for (i = 2; i <= k;i++)

{

if (n%i == 0) break;

}

if (i <=k) printf("This is not a prime");

else printf("This is a prime");

return 0;

}

2、判断n是否能被2~n-1整除

#include<stdioh>

int main()

{

int i, n;

scanf("%d", &n);

for (i = 2; i < n ; i++)

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime");

else printf("This is a prime");

return 0;

扩展资料:

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

判断语句(选择结构):

if 语句:“如果”语句;if—else 语句:“若…(则)…否则…”语句;switch 语句:“切换”语句;switch—case:“切换—情况”语句。

循环语句(循环结构):

while 语句:“当…”语句;do—while 语句:“做…当…(时候)”语句;for 语句:条件语句(即“(做)…为了…”语句)。

跳转语句(循环结构:是否循环):

goto 语句:“转舵”语句,也称“跳转”语句;break 语句:“中断”(循环)语句,即结束整个循环;continue 语句:“继续”语句(结束本次循环,继续下一次循环);return 语句:“返回”语句。

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”。)

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

书写规则

1、一个说明或一个语句占一行。

2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

参考资料:

百度百科-c语言

函数 int prime(int n) {} 返回 1是素数。
#include <stdioh>
#include <mathh>
int prime(int n)
{ int flag=1,i,k;
if (n<1) return 0;
if (n==1) return 1;
k = (int) sqrt(n+1);
for(i=2;i<=k;i++) if(n%i==0) {flag=0; break;}
return flag;
}
int main() {
int a[]={2,3,4,9,11};
int i,n;
n = sizeof(a)/sizeof(int); //数组元素个数
for (i=0;i<n;i++)
if ( prime(a[i]) == 1) printf("prime: %d\n",a[i]);
return 0;
}

第一种方法就是用1到100之间的每个数字,除以2到其本身前面的那一个数字,如果此过程中出现整除的现象,则该数不是素数。如果没有整除的现象,则该数为素数输出。代码如下#include<stdioh>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
int j = 0;
for (j = 2; j <= i; j++)
{
if (i%j == 0)
{
break;
}
}
if (i == j)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
第二种方法使用了SQRT函数,也就是平方根,这里的平方根是整数。众所周知,非素数可以写成除了1和它本身相乘的ab方式,而a、b之间必有一个小于等于ab之积的开平方根;如果这个非素数能够被a整除,则相应的肯定会被b整除。这种方法用1到100之间的数字除以2到它的开平方根(如果该数的平方根是整数则可以除到),在此之间如果出现整除现象,则该数不是素数;如果没有出现整除现象,则该数是素数。显而易见,这种方法比第一种方法要简便,运行的次数少#include<stdioh>
#include<mathh>
int main()
{
int i=0;
int count=0;
for(i=1;i<=100;i++)
{
int j=0;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d ",i);
}
}
printf("\ncount=%d\n",count);
return 0;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12580185.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存