源程序代码以及算法解释如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdioh>
int Func(int m)//判断函数
{
int n = 2;
while (n <= m && (m%n))//判断是否能被其他数整除
n++;
if (m == n)
return 1;
else
return 0;
}
int main()
{
int M_num;//定义变量
printf("请输入需要判断的数:\n");//文字提示
scanf("%i", &M_num);//循环输入数组元素
int i = Func(M_num);//判断是否是素数
if (i == 1)//输出结果
printf("输入的数是素数");
if (i == 0)
printf("输入的数不是素数");
printf("\n");
return 0;
}
程序运行结果如下:
扩展资料:
输出1-100之间的所有素数程序如下:
#include<stdioh>
int PrimeNumer(int x) //定义一个函数判断
{
assert(x > 0); //判断
int i; //被除数
for (i = 2; i < x; i++)
{
if (x%i == 0)
{
return 0; //表示正常终止
}
}
return 1; //只是给主调函数一个标志,说明他的执行过程中遇到异常情况。 然后就返回主调函数来处理,继续执行。
}
int main()
{
int i,a;
int count = 0;
for (i = 2; i < 101; i++)
{
if (PrimeNumer(i)) //调用函数来判断
{
count++; //加入了一个计数器
printf("%d\n", i);
}
}
printf("素数出现的次数%d", count);
system("pause");
return 0;
}
先建立一个初始的素数表,例如:100以内的素数数组,用来快速判断是否是素数对于超过100的素数,算法,用不大于根号n的素数,对n进行试除,如果都不能除尽,则为素数。
#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;
printf("输入一个正整数: ");
scanf("%d",&n);
if(isPrime(n))
printf("%d is a prime number\n",n);
else
printf("%d is not a prime number\n",n);
return 0;
}
扩展资料;
首先,本文英文字母都表示整数,上半部B 》3N 》W,下半部B 》W 》3N。大于3的素数只有6N-1和6N+1两种形式,我们只需判定这两种数是素数还是合数即可。
命题 1 对于B=36N+1 形数而言。
若不定方程(3N)^2+N-(B-1)/36=W^2 有整数解,
则 6(3N-W)+1 是小因子数;6(3N+W)+1 是大因子数。
若不定方程 (3N)^2-N-(B-1)/36=W^2 有整数解,
则 6(3N-W)-1 是小因子数;6(3N+W)-1 是大因子数。
-质数
#include<stdioh>
int isprime(int n)
{
int i;
for (i=2;i<n;i++)
if(n%i==0)return 0;
return 1;
}
void main()
{
int n;
printf("请输入一个数:");
scanf("%d",&n);
if(isprime(n))
printf("%d是素数\n");
else
printf("%di不是素数\n"); }
#include <stdioh>
int prime(int a);
void main(void)
{
int InputNumber;
int ReturnNumber;
printf("Please input a number:");
scanf("%d",&InputNumber);
ReturnNumber = prime(InputNumber);
if(ReturnNumber == 0)
printf("The number is a prime\n");
else if(ReturnNumber == 1)
printf("The number is not a prime\n");
return ;
}
int prime(int a)
{
int divisor;
int remainder;
for(divisor = 2; divisor < a; divisor ++)
{
remainder = a%divisor;
if(remainder == 0 )
{
break;
}
}
if(divisor == a)
return 0;
if(divisor != a || a == 1)
return 1;
}
扩展资料:
scanf()函数用法:
输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。
scanf("%s",s);改为scanf("%s",&s);
scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);
格式控制字符串包含:格式控制说明,普通字符。
1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)
2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。
3、输入的参数是变量的地址,所以要在变量前面加&。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)