c语言求质数因子(质数专题C语言)
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。
2. 列出连续整数2.1 正序列出连续整数
列出1到15的连续整数
#include <stdio.h>
int main(){
int digit;
digit = 1;
while (digit <= 15){
printf("%d\n", digit);
digit = 1;
}
return 0;
}
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2.2 逆序列出连续整数
列出1到15的逆序连续整数
#include <stdio.h>
int main(){
int digit;
digit = 15;
while (digit >= 1){
printf("%d\n", digit);
digit -= 1;
}
return 0;
}
运行结果
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
输出小于等于15的所有质数
#include <stdio.h>
int main(){
printf("2\n");
int digit;
int divisor;
for (digit = 3; digit <= 15; digit = 2){
for (divisor = 3; divisor < digit; divisor = 2){
if(digit % divisor == 0){
break;
}
}
if (divisor == digit){
printf("%d\n",digit);
}
}
}
运行结果:
2
3
5
7
11
13
题目描述
请对于给定的一个大于1的正整数 (你可以认为测评机给出的 N均小于1000 ),判定它是否是一个质数。
输入格式测评机会反复运行你的程序。每次程序运行时,你的程序仅需输入一个符合描述的正整数。
输出格式输出也仅为一行,如果判题机在输入中给出的数字为质数,那么请输出YES;否则,请输出NO。
#include <stdio.h>
int main(){
int num = 0;
int digit;
scanf("%d", &digit);
for (int divisor = 2; divisor < digit; divisor ){
if (digit % divisor == 0){
num ;
}
}
if (num == 0){
printf("YES");
}
else {
printf("NO");
}
return 0;
}
题目描述
我们都知道,对于一个大于 的整数,如果除了 和它本身,它不再被其它正整数整除,那么我们说它是一个质数。
请对于给定的一个大于 1的正整数 (你可以认为测评机给出的 N均小于1000 ),按从小到大的顺序输出所有小于等于它的质数。
输入格式测评机会反复运行你的程序。每次程序运行时,你的程序仅需输入一个符合描述的正整数。
输出格式请按从小到大的顺序输出所有小于等于 的质数,一个数单独占一行。
#include <stdio.h>
int main(){
int digit, divisor;
scanf("%d",&digit);
for (int i = 2; i <= digit; i ){
for(divisor = 2; divisor <= i; divisor ){
if (i % divisor == 0){
break;
}
}
if (i == divisor){
printf("%d\n", divisor);
}
}
return 0;
}
题目描述
列举所有的大于1小于15的质数。
#include <stdio.h>
int main(){
int n = 15;
int mark[16] = {
1, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
};
int divisor; // 因子数1
int i;
for (divisor = 2; divisor * divisor <= n; divisor ){
if(mark[divisor] != 1){
for (int j=2; j <= n / divisor; j ){
mark[divisor * j] = 1;
}
}
}
for (divisor = 2; divisor <= n; divisor ){
if (mark[divisor] != 1){
printf("%d\n", divisor);
}
}
return 0;
}
题目描述
对于一个大于1 的整数,如果除了 1和它本身,它不再被其它正整数整除,那么我们说它是一个质数。
请对于给定的一个大于1 的正整数 N(你可以认为测评机给出的 N均小于等于10^6 ),和一个大于1 的正整数M(你可以认为测评机给出的M 均小于等于10^6 ), N一定大于M ,请按从小到大的顺序输出所有小于等于N 且大于等于M的质数。
#include <stdio.h>
#include <string.h>
int n = 1000000;
int mark[100001];
int main(){
int divisor;
int j;
memset(mark, 0, sizeof(mark));
mark[0] = 1;
mark[1] = 1;
for (divisor =2; divisor * divisor <= n; divisor ){
// 请在此完成功能
if(mark[divisor] != 1){
for (j = 2; j <= n / divisor; j ){
mark[divisor * j] = 1;
}
}
}
int num_min, num_max;
scanf("%d %d", &num_max, &num_min);
for (divisor = 2; divisor <= n; divisor ){
if (mark[divisor] != 1 && divisor <= num_max && divisor >=num_min){
printf("%d\n",divisor);
}
}
return 0;
}
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com