经典算法之判断一个整数是否为素数

经典算法之判断一个整数是否为素数

 1 /**
 2     判断一个数是否为素数          如:
 3     输入:  任意一个数                12
 4     输出:  1或0(1表示为素数)        0
 5 */
 6 /**************被称为笨蛋的做法************/
 7 #include <stdio.h>
 8
 9 int main()
10 {
11
12     int i,n; //i为计数数,n为存储用户输入的数
13
14     do    //循环检测用户输入的数据>0为合法
15     scanf("%d",&n);
16     while(n<=0);
17
18     for(i=1;i<n;i++)//从1到n判断求余
19         if(n%i==0)//余为0,i<n
20             break;
21
22     if(i<n || n==1)//i<n,或n=1,1不是素数
23         printf("0");
24     else
25         printf("1");
26     return 0;
27 }
28 /**一个数去除以比它的一半还要大的数,一定除不尽,所以还用判断吗??*/


经典算法之判断一个整数是否为素数

时间: 2025-01-18 09:00:59

经典算法之判断一个整数是否为素数的相关文章

判断一个整数是否为素数(质数)

//判断一个整数是否为素数(质数)//质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数#include <stdio.h>int main(){ int n, i, flag = 0; printf("请输入一个正整数:"); scanf("%d", &n); for (i = 2; i <= n / 2; ++i) { //如果满足以下的条件,他就不是素数 if (n%i == 0) { flag = 1;

判断一个整数不是2的阶次方树

如果是一个2的阶次方,那么它的二进制数的首位一般是1,后面接若干个0.比如8就是1000,64是100 0000. 如果将这个数减1后,再与该数做和&运算,则改全为0. package cn.usst.DataTest; import java.io.*; /** * 从键盘输入一个值 */ public class InputData { static private String s = ""; static public void input() { BufferedRe

判断一个整数是否是2的n次方

参考:http://bbs.csdn.net/topics/370058619 如题,如何判断一个整数是否是2的N次方,我能想到的方法有两个 1.一直除2,看最后是否等于1.(最笨的方法) 2.转换成2进制,看是否是这个样子的:1,10,100,1000,10000,就是除了最高位是1,其他都是0,或者说只有一个1. 3.当我还在为我能想到第二个方法而沾沾自喜的时候,我看到了下面这种更巧妙的方法 以4(100) 7(0111) 8(1000)为例 4 & 3 --> 100 & 01

c语言:判断一个整数是不是2的整数次方

判断一个整数是不是2的整数次方. 解:程序: #include<stdio.h> int count(int t) { int count=0; while (t) { count++; t=t&(t-1); } return count; } int main() { int num,ret=0; printf("请输入一个整数:"); scanf("%d", &num); ret = count(num); if (ret == 1)

判断一个整数是否为另一个整数的幂数

   最近在学习微软推出的虚拟课程中关于网络上最火的20个关于c#的问题,写下关于对于这个问题的个人理解和解决思路,请各位看官笑纳. 题目为:(原)判断一个数字是否2的幂数? 这是我个人还没看正确答案前自己的解决思路(一个小控制台程序),代码如下: static void Main(string[] args) { for (int increment = 0; increment < 100000; increment++) { if (IsPower(increment)) { Consol

判断一个整数是否是平方数

367. Valid Perfect Square 题意:不用api,判断一个整数是否是平方数. 开始的想法是直接用二分法判断是否是平方数. 错误的代码: 1 public boolean isPerfectSquare(int num) { 2 // binary search 3 int i=0; 4 int n=num; 5 while(i<=n){ 6 int mid=i+(n-i)/2; 7 int square=mid*mid; 8 if(square==num) return tr

判断一个整数是否为回文数 Check if a number is palindrome

一种方法是先翻转当前数,然后把它和原数比较(略) 另一种是递归方法,借用一个复制数,对原数递归,使之翻转,然后配合复制数比较 package recursion; public class Check_if_a_number_is_palindrome { public static void main(String[] args) { int num = 121321; System.out.println(check(num)); num = 12321; System.out.printl

在10000以内判断一个整数,它加上100和加上268后都是一个完全平方数 3 提问:请问该数是多少?

1 ''' 2 在10000以内判断一个整数,它加上100和加上268后都是一个完全平方数 3 提问:请问该数是多少? 4 ''' 5 import math 6 for i in range(10000): 7 m = math.sqrt(i + 100) 8 n = math.sqrt(i + 268) 9 if m * m == i + 100 and n * n == i + 268: 10 print(i) 原文地址:https://www.cnblogs.com/JerryZao/p

判断一个整数是否是回文数C++实现 leetcode系列(九)

判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 . 从右向左读, 为 121- .因此它不是一个回文数. 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 .因此它不是一个回文数. 这道验证回文数字的题如果将数字转为字符串,就变成了验证回文字符串的题,没啥难度了,我们就直接来做follow up吧