A. c语言编写函数判断素数
/判断是不是素数
#include<stdio.h>
int prime(int a);//函数声明
int main()
{
int n,i;
scanf("%d",&n);
if(prime(n)==1) //return返回值1
printf("prime");
else
printf("not prime") ;
}
int prime(int a)
{
int i;
for(i=2;i<a;i++)
if(a%i==0)
return 0;//a%i==0不成立
else
return 1;//a%i==0成立
}
素数的算法
1、素数:除了1和本身外无法被其他自然数整除的数,叫做素数,也称质数,如:2,3,5,7一系列。
2、合数:比1大但不是素数的数称为合数,如:8,9,10一系列。
3、特殊的数字:1和0既不是素数也不是合数。
4、算法: 1>确定性算法 2>随机性算法 3>Eratosthenes算法。
B. 用C语言写出求素数的编程
参考代码:
int main(){
int num,m,n,d,c,priSum;
printf("Enter the Range Between m,n ");
scanf("%d %d", &m,&n);
for (num = n; num <= m; num++)
{
for(d = 2; d < num; d++)
{
if (num % d == 0){
continue;
}
}
if (d == num){
priSum += d;
c++;
}
}
printf("m~n之间的素数个数:%d,和 %d ",c,priSum);
return 0;
}
C. 写一个C语言编程,求素数及反序数
什么意思(要求)?我这儿有我写的一个判断既是回文数又是素数的程序,应该是一样的吧?
#include<iostream>
//求既是回文数又是素数的五位数,回文数:即12121=12121;5687865=5687865;
#include "math.h"
#include "stdlib.h"
using namespace std;
int main()
{
int i;
int m = 0;
int j;
int num1 = 0;
for (i = 10000; i<100000; i++)
{
for (j = 2; j <= sqrt(i); j++)
{
if (i%j == 0)
{
break;
}
}
if (j>sqrt(i))
{
m = (i % 10) * 10000 + (i % 100 - i % 10) / 10 * 1000 + (i % 1000 - i % 100) / 100 * 100 + (i % 10000 - i % 1000) / 1000 * 10 + (i - i % 10000) / 10000;
if (m == i)
{
num1 = num1 + 1;
}
}
}
cout << "We find " << num1 << " number of the kind you want to find." << endl;
system("pause");
return 0;
}
D. C语言编写一个程序判断一个数是否为素数急求
目的:判断一个数是否为素数
#include<stdio.h>
intmain(void)
{
int m;
inti;
scanf("%d",&m);
for(i=2;i< m;i++) //2到(m-1)的数去除m
{
if(m%i==0)//判断能否整除
break;
}
if(i== m)
printf("YES!
");
else
printf("No!
");
}
for循环的功能:
①若能整除,通过break跳出函数;
②若一直到m-1都不能整除,此时i再自增1到m,不满足i< m跳出for循环,这时i= m。
(4)c语言编程求素数扩展阅读:
素数定理:
1、在一个大于1的数a和它的2倍之间(即区间(a,2a]中)必存在至少一个素数。
2、存在任意长度的素数等差数列。
3、一个偶数可以写成两个合数之和,其中每一个合数都最多只有9个质因数。(挪威数学家布朗,1920年)。
4、一个偶数必定可以写成一个质数加上一个合成数,其中合数的因子个数有上界。(瑞尼,1948年)。
5、一个偶数必定可以写成一个质数加上一个最多由5个因子所组成的合成数。后来,有人简称这结果为(1+5)(中国潘承洞,1968年)。
6、一个充分大偶数必定可以写成一个素数加上一个最多由2个质因子所组成的合成数。简称为(1+2)。
E. c语言求素数的算法
根据素数的性质,代码设计如下:
设计一:判断n是否能被1~n-1整除,不能整除为素数
#include<stdio.h>
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;
}
设计二:判断n是否能被2~√n间的整数整除,不能整除为素数
#include<stdio.h>
#include<math.h>
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;
}
(5)c语言编程求素数扩展阅读:
1.素数的定义是只能被1和他本身整除,1不是素数.因此要判断一个数是否为素数.就要判断它能不能被比他小的所有素数整除,这是一个算法.(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)
2.如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。由此可以得到一个法2较快的素数判断算法
F. C语言编程:编写程序,求3-100之间所有素数之和(要求判断素数由函数实现)。
#include"stdio.h"
intisprime(intn)//判断n是否为素数,是返回1,不是返回0
{
inti;
if(n==1)
return0;//1不是素数
for(i=2;i<=n/2;i++)//如果从2开始,到这个数半值时,有一个数能被整除,则不是素数
if(n%i==0)
return0;
//从2开始,到这个数一半值时,没有一个能整除,则是素数
return1;
}
intmain()
{
intsum=0;
inti;
for(i=3;i<=100;i++)
if(isprime(i)==1)//是素数就加到sum上去,
sum+=i;
printf("3到100之间的素数之和为:%d ",sum);
}
G. 用C语言编写在自然数中输出100以内的素数
#include<stdio.h>
//输出100之内的所有素数
int main()
{
int i;
int j;
int flag = 1;
for(i = 2;i <= 100;i++)
{
for(j = 2;j <= i / 2;j++)
{
if(i % j ==0)
{
flag = 0;
break;
}
}
if(flag == 1)
{
printf("%d ",i);
}
flag = 1;
}
return 0;
}
(7)c语言编程求素数扩展阅读
#include <stdio.h>
int main()
{
int a;
for (int i = 2; i < 100; i++)
{
int a = 0;
/* code */
for (int j = 2; j < i; j++)
{
/* code */
if (i % j == 0)
{
/* code */
a++;
}
}
if (a == 0)
{
/* code */
printf("%d is sushu ", i);
}
else
{
/* code */
printf("%d is not sushu ", i);
}
}
return 0;
}
H. C语言编程 求素数 求解释
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m); //一个数不是素数,那么开平方也一定不是素数。
//将一个数开平方再取整,可以减少比较次数,提高运行效率。
for(i=2;i<=k;i++)//一个一个比较看这个数能不能除尽小于它的所有数
if(m%i==0) //如果可以除尽这个数,那么就跳出循环
break;
if(i>=k+1) //如果i>=k+1 说明一直循环到最后了,中间没有可以除尽的数,这个数就是素数
printf("%d is a prime number\n",m);
else //相反就不是素数
printf("%d is not a prime number\n",m);
system("pause");
}
I. c语言编程求素数(也即是质数)
#include <stdio.h>
void main()
{ int x;
int i,f;
f=0;
scanf("%d",&x);
for(i=2;i<x/2+1;i++)
if(x%i==0) { f=1; break;}
else {f=0; continue;}
if(f) printf("%d不是素数\n",x);
else printf("%d是素数\n",x);
system("pause");
}
比之前的少一般的计算量