在主函数中调用结构
calling structure into main function
我正在编写代码来查找两个素数。为此,我需要 return 函数 primefactor() 中的两个值。我正在使用一个结构来 return 这两个值。
#include <stdio.h>
#include<stdbool.h>
struct tuple {
long int prime1,prime2;
};
typedef struct tuple primefind;
bool isPrime(int n)
{
// Corner case
if (n <= 1) return false;
// Check from 2 to n-1
for (int i=2; i<n; i++)
if (n%i == 0)
return false;
return true;
}
long int nextPrime(long int n)
{
// Base case
if (n <= 1)
return 2;
long int prime = n;
bool found = false;
// Loop continuously until isPrime returns
// true for a number greater than n
while (!found)
{
prime++;
if (isPrime(prime))
found = true;
}
return prime;
}
primefind primeFactor(long int n)
{
primefind tuple1;
long int p, q;
p = 2;
while (p <= (n / p))
{
if (n % p == 0)
{
q = n / (p);
break;
}
p = nextPrime(p);
}
tuple1.prime1 = p;
tuple1.prime2 = q;
return tuple1;
}
int main()
{
return 0;
}
如何在主函数中打印 primeFactor 函数的两个变量 p,q 的值?
谢谢。
只需在 main()
函数中创建一个对象(结构)并将其分配给 primeFactor()
函数的 return 值。
int main()
{
primefind data = primeFactor(50);
printf("prime1 = %ld\n", data.prime1);
printf("prime2 = %ld\n", data.prime2);
return 0;
}
像这样
primefind result = primeFactor(42);
printf("%ld %ld \n", result.prime1, result.prime2);
显而易见的解决方案有什么问题吗?
primefind primes = primeFactor(n);
printf("%ld %ld\n", primes.prime1, primes.prime2);
您也可以考虑改变您的方法并为您的 return 值使用函数参数:
void primeFactor(long int n, long int *prime1, long int *prime2)
{
// ...
*prime1 = 7;
*prime2 = 11;
return;
}
另外请考虑只检查不超过您的数字的平方根的因数。
我正在编写代码来查找两个素数。为此,我需要 return 函数 primefactor() 中的两个值。我正在使用一个结构来 return 这两个值。
#include <stdio.h>
#include<stdbool.h>
struct tuple {
long int prime1,prime2;
};
typedef struct tuple primefind;
bool isPrime(int n)
{
// Corner case
if (n <= 1) return false;
// Check from 2 to n-1
for (int i=2; i<n; i++)
if (n%i == 0)
return false;
return true;
}
long int nextPrime(long int n)
{
// Base case
if (n <= 1)
return 2;
long int prime = n;
bool found = false;
// Loop continuously until isPrime returns
// true for a number greater than n
while (!found)
{
prime++;
if (isPrime(prime))
found = true;
}
return prime;
}
primefind primeFactor(long int n)
{
primefind tuple1;
long int p, q;
p = 2;
while (p <= (n / p))
{
if (n % p == 0)
{
q = n / (p);
break;
}
p = nextPrime(p);
}
tuple1.prime1 = p;
tuple1.prime2 = q;
return tuple1;
}
int main()
{
return 0;
}
如何在主函数中打印 primeFactor 函数的两个变量 p,q 的值?
谢谢。
只需在 main()
函数中创建一个对象(结构)并将其分配给 primeFactor()
函数的 return 值。
int main()
{
primefind data = primeFactor(50);
printf("prime1 = %ld\n", data.prime1);
printf("prime2 = %ld\n", data.prime2);
return 0;
}
像这样
primefind result = primeFactor(42);
printf("%ld %ld \n", result.prime1, result.prime2);
显而易见的解决方案有什么问题吗?
primefind primes = primeFactor(n);
printf("%ld %ld\n", primes.prime1, primes.prime2);
您也可以考虑改变您的方法并为您的 return 值使用函数参数:
void primeFactor(long int n, long int *prime1, long int *prime2)
{
// ...
*prime1 = 7;
*prime2 = 11;
return;
}
另外请考虑只检查不超过您的数字的平方根的因数。