我的任务是检查一个数字是否为素数,但我必须使用三个部分来完成它。第一个是代码的主体,后面跟着两个函数。第一个检查数字是否为偶数,第二个检查数字是否为素数。我知道这是一个相当繁琐的方法来检查一个数字是否是素数,但它是为了让我们介绍函数和函数调用!
除了打印非素数的最小除数之外,我已经完成了所有工作。我认为从第二个函数使用i会起作用但它不会输出。我已通过以下代码复制 - 如果您有任何建议,请提供帮助!
#include <stdio.h>
#include <math.h>
int even (int);
int find_div (int);
int main() {
int num, resultEven, resultPrime, i;
printf("Enter a number that you think is a prime number (between 2 and 1000)> \n");
scanf("%d", &num);
while (num < 2 || num > 1000) {
if (num < 2) {
printf("Error: number too small. The smallest prime is 2.\n");
printf("Please reenter the number > \n");
scanf("%d", &num);
}
else if (num > 1000) {
printf("Error: largest number accepted is 1000.\n");
printf("Please reenter the number > \n");
scanf("%d", &num);
}
else {
}
}
resultEven = even(num);
resultPrime = find_div(num);
if (resultEven == 1) {
printf("2 is the smallest divisor of %d. Number not prime\n", num);
}
else if (resultPrime == 1) {
printf("%d is the smallest divisor of %d. Number not prime\n", i, num);
}
else {
printf("%d is a prime number.\n", num);
}
return 0;
}
int even(int num) {
if (num % 2 == 0) {
return 1;
}
else {
return 0;
}
}
int find_div(int num) {
int i;
for (i = 2; i <= (num/2); i++) {
if (num % i == 0) {
return 1;
}
if (num == i) {
return 0;
}
}
return i;
}
答案 0 :(得分:1)
我会为Wilsons定理创建一个函数(p-1)! = 1(mod p)iff p是素数,首先是关闭,为了使函数更好,更容易,你只需要一个。对于小于1000的数字,它应该可以正常工作。
之类的,
//it will return 1 iff p is prime
int wilson(int p)
{
int i, result = 1;
for (i = 0; i < p; i++)
{
result *= i;
result = result % p;
}
return result;
}
但是,如果您没有打印支票,请在文件顶部
#include <stdio.h>
你的
resultEven = even(num)
需要一个;最后但是评论中提到了这一点,除了你的方法虽然奇怪是正确的,你也不需要其他的,可以简单地删除你的好
<强>更新强>
//if return value == 1 its prime, else not prime, and
//return value = smallest divisor
int findDiv(int p)
{
int i= 0;
for (; i <= n/2; i++)
{
//you number is a multiple of i
if (num % i == 0)
{
//this is your divisor
return num;
}
}
//1 is the largest divisor besides p itself/smallest/only other
return 1;
}
答案 1 :(得分:0)
你的函数调用是正确的,但你需要在结尾处使用分号(;)
resultEven = even(num)
否则该程序会有效地检查均匀度。检查主要方法是确保数字除了一个和它自身之外没有其他因素。这是通过使用for循环找到每个整数的div从2到一半被测试的数字来完成的。如果一个数字产生一个div为0,那么它不是素数,因为t的因子不是1,而是它本身。