打印素数求助:为啥我打印出来2与3大量重复;
[*]#include <stdio.h>
[*]
[*]int main()
[*]{
[*]
[*] int check_prime(int n);
[*] int number,i;
[*]
[*] for ( i = 3; i < 200; i++)
[*] {
[*] printf("%d\t", check_prime(i));
[*] }
[*] return 0;
[*]}
[*]
[*]int check_prime(int n)
[*]{
[*] int i;
[*] for ( i = 2; i < n; i++)
[*] {
[*] if (n % i == 0)
[*] {
[*] return i;
[*] }
[*] }
[*]}
[*]求助:为啥我打印出来2与3大量重复;
打印结果:
3 2 5 2 7 2 3 2 11 2 13 2 3 2 17 219 2 3 2 23 2 5 2 3 2 29 2 31 2 3 25 2 37 2 3 2 41 2 43 2 3 2 47 2 7 23 2 53 2 5 2 3 2 59 2 61 2 3 2 5 267 2 3 2 71 2 73 2 3 2 7 2 79 2 3 283 2 5 2 3 2 89 2 7 2 3 2 5 2 97 23 2 101 2 103 2 3 2 107 2 109 2 3 2 113 25 2 3 2 7 2 11 2 3 2 5 2 127 2 3 2131 2 7 2 3 2 137 2 139 2 3 2 11 2 5 23 2 149 2 151 2 3 2 5 2 157 2 3 2 7 2163 2 3 2 167 2 13 2 3 2 173 2 5 2 3 2179 2 181 2 3 2 5 2 11 2 3 2 191 2 193 23 2 197 2 199
[*]
check_prime函数找到的时候返回变量 i
没有找到的时候怎么办?
int check_prime(int n)
{
int i;
for ( i = 2; i < n; i++)
{
if (n % i == 0)
{
return i;
}
}
// 执行到这里怎么办?
} #include <stdio.h>
int check_prime(int n);
int main()
{
//int check_prime(int n);
int i;
for ( i = 3; i < 200; i++)
{
//printf("%d\t", check_prime(i));
if(check_prime(i))
printf("%d\t",i);
}
return 0;
}
int check_prime(int n)
{
int j;
for ( j = 2; j < n; j++)
{
if (n % j == 0)
{
return 0;
}
else
{
if(j==n-1)
return n;
}
}
}
说明:
1. 函数声明在外部
2. 子函数返回int型,所以你要自己规定不是素数的返回值,再利用这个返回值做判断。
输出:
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89 97 101 103 107 109 113 127
131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
页:
[1]